mkl_vsl.f90 132 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369
  1. ! file: mkl_vsl.fi
  2. !===============================================================================
  3. ! Copyright 2006-2022 Intel Corporation.
  4. !
  5. ! This software and the related documents are Intel copyrighted materials, and
  6. ! your use of them is governed by the express license under which they were
  7. ! provided to you (License). Unless the License provides otherwise, you may not
  8. ! use, modify, copy, publish, distribute, disclose or transmit this software or
  9. ! the related documents without Intel's prior written permission.
  10. !
  11. ! This software and the related documents are provided as is, with no express
  12. ! or implied warranties, other than those that are expressly stated in the
  13. ! License.
  14. !===============================================================================
  15. !++
  16. ! Fortran 90 VSL interface.
  17. !--
  18. MODULE MKL_VSL_TYPE
  19. !++
  20. ! Definitions for VSL functions return values (errors, warnings)
  21. !--
  22. ! "No error" status
  23. INTEGER(KIND=4) VSL_STATUS_OK
  24. INTEGER(KIND=4) VSL_ERROR_OK
  25. PARAMETER (VSL_STATUS_OK = 0)
  26. PARAMETER (VSL_ERROR_OK = 0)
  27. ! Common errors (-1..-999)
  28. INTEGER(KIND=4) VSL_ERROR_FEATURE_NOT_IMPLEMENTED
  29. INTEGER(KIND=4) VSL_ERROR_UNKNOWN
  30. INTEGER(KIND=4) VSL_ERROR_BADARGS
  31. INTEGER(KIND=4) VSL_ERROR_MEM_FAILURE
  32. INTEGER(KIND=4) VSL_ERROR_NULL_PTR
  33. INTEGER(KIND=4) VSL_ERROR_CPU_NOT_SUPPORTED
  34. PARAMETER (VSL_ERROR_FEATURE_NOT_IMPLEMENTED = -1)
  35. PARAMETER (VSL_ERROR_UNKNOWN = -2)
  36. PARAMETER (VSL_ERROR_BADARGS = -3)
  37. PARAMETER (VSL_ERROR_MEM_FAILURE = -4)
  38. PARAMETER (VSL_ERROR_NULL_PTR = -5)
  39. PARAMETER (VSL_ERROR_CPU_NOT_SUPPORTED = -6)
  40. ! RNG errors (-1000..-1999)
  41. ! brng errors
  42. INTEGER(KIND=4) VSL_RNG_ERROR_INVALID_BRNG_INDEX
  43. INTEGER(KIND=4) VSL_RNG_ERROR_LEAPFROG_UNSUPPORTED
  44. INTEGER(KIND=4) VSL_RNG_ERROR_SKIPAHEAD_UNSUPPORTED
  45. INTEGER(KIND=4) VSL_RNG_ERROR_SKIPAHEADEX_UNSUPPORTED
  46. INTEGER(KIND=4) VSL_RNG_ERROR_BRNGS_INCOMPATIBLE
  47. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_STREAM
  48. INTEGER(KIND=4) VSL_RNG_ERROR_BRNG_TABLE_FULL
  49. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_STREAM_STATE_SIZE
  50. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_WORD_SIZE
  51. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_NSEEDS
  52. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_NBITS
  53. INTEGER(KIND=4) VSL_RNG_ERROR_QRNG_PERIOD_ELAPSED
  54. INTEGER(KIND=4) VSL_RNG_ERROR_LEAPFROG_NSTREAMS_TOO_BIG
  55. PARAMETER (VSL_RNG_ERROR_INVALID_BRNG_INDEX = -1000)
  56. PARAMETER (VSL_RNG_ERROR_LEAPFROG_UNSUPPORTED = -1002)
  57. PARAMETER (VSL_RNG_ERROR_SKIPAHEAD_UNSUPPORTED = -1003)
  58. PARAMETER (VSL_RNG_ERROR_SKIPAHEADEX_UNSUPPORTED = -1004)
  59. PARAMETER (VSL_RNG_ERROR_BRNGS_INCOMPATIBLE = -1005)
  60. PARAMETER (VSL_RNG_ERROR_BAD_STREAM = -1006)
  61. PARAMETER (VSL_RNG_ERROR_BRNG_TABLE_FULL = -1007)
  62. PARAMETER (VSL_RNG_ERROR_BAD_STREAM_STATE_SIZE = -1008)
  63. PARAMETER (VSL_RNG_ERROR_BAD_WORD_SIZE = -1009)
  64. PARAMETER (VSL_RNG_ERROR_BAD_NSEEDS = -1010)
  65. PARAMETER (VSL_RNG_ERROR_BAD_NBITS = -1011)
  66. PARAMETER (VSL_RNG_ERROR_QRNG_PERIOD_ELAPSED = -1012)
  67. PARAMETER (VSL_RNG_ERROR_LEAPFROG_NSTREAMS_TOO_BIG = -1013)
  68. ! abstract stream related errors
  69. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_UPDATE
  70. INTEGER(KIND=4) VSL_RNG_ERROR_NO_NUMBERS
  71. INTEGER(KIND=4) VSL_RNG_ERROR_INVALID_ABSTRACT_STREAM
  72. PARAMETER (VSL_RNG_ERROR_BAD_UPDATE = -1120)
  73. PARAMETER (VSL_RNG_ERROR_NO_NUMBERS = -1121)
  74. PARAMETER (VSL_RNG_ERROR_INVALID_ABSTRACT_STREAM = -1122)
  75. ! non deterministic stream related errors
  76. INTEGER(KIND=4) VSL_RNG_ERROR_NONDETERM_NOT_SUPPORTED
  77. INTEGER(KIND=4) VSL_RNG_ERROR_NONDETERM_NRETRIES_EXCEEDED
  78. PARAMETER (VSL_RNG_ERROR_NONDETERM_NOT_SUPPORTED = -1130)
  79. PARAMETER (VSL_RNG_ERROR_NONDETERM_NRETRIES_EXCEEDED = -1131)
  80. ! ARS5 stream related errors
  81. INTEGER(KIND=4) VSL_RNG_ERROR_ARS5_NOT_SUPPORTED
  82. PARAMETER (VSL_RNG_ERROR_ARS5_NOT_SUPPORTED = -1140)
  83. ! read/write stream to file errors
  84. INTEGER(KIND=4) VSL_RNG_ERROR_FILE_CLOSE
  85. INTEGER(KIND=4) VSL_RNG_ERROR_FILE_OPEN
  86. INTEGER(KIND=4) VSL_RNG_ERROR_FILE_WRITE
  87. INTEGER(KIND=4) VSL_RNG_ERROR_FILE_READ
  88. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_FILE_FORMAT
  89. INTEGER(KIND=4) VSL_RNG_ERROR_UNSUPPORTED_FILE_VER
  90. INTEGER(KIND=4) VSL_RNG_ERROR_BAD_MEM_FORMAT
  91. PARAMETER (VSL_RNG_ERROR_FILE_CLOSE = -1100)
  92. PARAMETER (VSL_RNG_ERROR_FILE_OPEN = -1101)
  93. PARAMETER (VSL_RNG_ERROR_FILE_WRITE = -1102)
  94. PARAMETER (VSL_RNG_ERROR_FILE_READ = -1103)
  95. PARAMETER (VSL_RNG_ERROR_BAD_FILE_FORMAT = -1110)
  96. PARAMETER (VSL_RNG_ERROR_UNSUPPORTED_FILE_VER = -1111)
  97. PARAMETER (VSL_RNG_ERROR_BAD_MEM_FORMAT = -1200)
  98. ! Convolution/correlation errors
  99. INTEGER(KIND=4) VSL_CC_ERROR_NOT_IMPLEMENTED
  100. INTEGER(KIND=4) VSL_CC_ERROR_ALLOCATION_FAILURE
  101. INTEGER(KIND=4) VSL_CC_ERROR_BAD_DESCRIPTOR
  102. INTEGER(KIND=4) VSL_CC_ERROR_SERVICE_FAILURE
  103. INTEGER(KIND=4) VSL_CC_ERROR_EDIT_FAILURE
  104. INTEGER(KIND=4) VSL_CC_ERROR_EDIT_PROHIBITED
  105. INTEGER(KIND=4) VSL_CC_ERROR_COMMIT_FAILURE
  106. INTEGER(KIND=4) VSL_CC_ERROR_COPY_FAILURE
  107. INTEGER(KIND=4) VSL_CC_ERROR_DELETE_FAILURE
  108. INTEGER(KIND=4) VSL_CC_ERROR_BAD_ARGUMENT
  109. INTEGER(KIND=4) VSL_CC_ERROR_DIMS
  110. INTEGER(KIND=4) VSL_CC_ERROR_START
  111. INTEGER(KIND=4) VSL_CC_ERROR_DECIMATION
  112. INTEGER(KIND=4) VSL_CC_ERROR_XSHAPE
  113. INTEGER(KIND=4) VSL_CC_ERROR_YSHAPE
  114. INTEGER(KIND=4) VSL_CC_ERROR_ZSHAPE
  115. INTEGER(KIND=4) VSL_CC_ERROR_XSTRIDE
  116. INTEGER(KIND=4) VSL_CC_ERROR_YSTRIDE
  117. INTEGER(KIND=4) VSL_CC_ERROR_ZSTRIDE
  118. INTEGER(KIND=4) VSL_CC_ERROR_X
  119. INTEGER(KIND=4) VSL_CC_ERROR_Y
  120. INTEGER(KIND=4) VSL_CC_ERROR_Z
  121. INTEGER(KIND=4) VSL_CC_ERROR_JOB
  122. INTEGER(KIND=4) VSL_CC_ERROR_KIND
  123. INTEGER(KIND=4) VSL_CC_ERROR_MODE
  124. INTEGER(KIND=4) VSL_CC_ERROR_TYPE
  125. INTEGER(KIND=4) VSL_CC_ERROR_PRECISION
  126. INTEGER(KIND=4) VSL_CC_ERROR_EXTERNAL_PRECISION
  127. INTEGER(KIND=4) VSL_CC_ERROR_INTERNAL_PRECISION
  128. INTEGER(KIND=4) VSL_CC_ERROR_METHOD
  129. INTEGER(KIND=4) VSL_CC_ERROR_OTHER
  130. PARAMETER (VSL_CC_ERROR_NOT_IMPLEMENTED = -2000)
  131. PARAMETER (VSL_CC_ERROR_ALLOCATION_FAILURE = -2001)
  132. PARAMETER (VSL_CC_ERROR_BAD_DESCRIPTOR = -2200)
  133. PARAMETER (VSL_CC_ERROR_SERVICE_FAILURE = -2210)
  134. PARAMETER (VSL_CC_ERROR_EDIT_FAILURE = -2211)
  135. PARAMETER (VSL_CC_ERROR_EDIT_PROHIBITED = -2212)
  136. PARAMETER (VSL_CC_ERROR_COMMIT_FAILURE = -2220)
  137. PARAMETER (VSL_CC_ERROR_COPY_FAILURE = -2230)
  138. PARAMETER (VSL_CC_ERROR_DELETE_FAILURE = -2240)
  139. PARAMETER (VSL_CC_ERROR_BAD_ARGUMENT = -2300)
  140. PARAMETER (VSL_CC_ERROR_DIMS = -2301)
  141. PARAMETER (VSL_CC_ERROR_START = -2302)
  142. PARAMETER (VSL_CC_ERROR_DECIMATION = -2303)
  143. PARAMETER (VSL_CC_ERROR_XSHAPE = -2311)
  144. PARAMETER (VSL_CC_ERROR_YSHAPE = -2312)
  145. PARAMETER (VSL_CC_ERROR_ZSHAPE = -2313)
  146. PARAMETER (VSL_CC_ERROR_XSTRIDE = -2321)
  147. PARAMETER (VSL_CC_ERROR_YSTRIDE = -2322)
  148. PARAMETER (VSL_CC_ERROR_ZSTRIDE = -2323)
  149. PARAMETER (VSL_CC_ERROR_X = -2331)
  150. PARAMETER (VSL_CC_ERROR_Y = -2332)
  151. PARAMETER (VSL_CC_ERROR_Z = -2333)
  152. PARAMETER (VSL_CC_ERROR_JOB = -2100)
  153. PARAMETER (VSL_CC_ERROR_KIND = -2110)
  154. PARAMETER (VSL_CC_ERROR_MODE = -2120)
  155. PARAMETER (VSL_CC_ERROR_TYPE = -2130)
  156. PARAMETER (VSL_CC_ERROR_PRECISION = -2140)
  157. PARAMETER (VSL_CC_ERROR_EXTERNAL_PRECISION = -2141)
  158. PARAMETER (VSL_CC_ERROR_INTERNAL_PRECISION = -2142)
  159. PARAMETER (VSL_CC_ERROR_METHOD = -2400)
  160. PARAMETER (VSL_CC_ERROR_OTHER = -2800)
  161. !++
  162. ! SUMMARY STATTISTICS ERROR/WARNING CODES
  163. !--
  164. ! Warnings
  165. INTEGER(KIND=4) VSL_SS_NOT_FULL_RANK_MATRIX
  166. INTEGER(KIND=4) VSL_SS_SEMIDEFINITE_COR
  167. PARAMETER (VSL_SS_NOT_FULL_RANK_MATRIX = 4028)
  168. PARAMETER (VSL_SS_SEMIDEFINITE_COR = 4029)
  169. ! Errors and messages (-4000..-4999)
  170. INTEGER(KIND=4) VSL_SS_ERROR_ALLOCATION_FAILURE
  171. INTEGER(KIND=4) VSL_SS_ERROR_BAD_DIMEN
  172. INTEGER(KIND=4) VSL_SS_ERROR_BAD_OBSERV_N
  173. INTEGER(KIND=4) VSL_SS_ERROR_STORAGE_NOT_SUPPORTED
  174. INTEGER(KIND=4) VSL_SS_ERROR_BAD_INDC_ADDR
  175. INTEGER(KIND=4) VSL_SS_ERROR_BAD_WEIGHTS
  176. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MEAN_ADDR
  177. INTEGER(KIND=4) VSL_SS_ERROR_BAD_2R_MOM_ADDR
  178. INTEGER(KIND=4) VSL_SS_ERROR_BAD_3R_MOM_ADDR
  179. INTEGER(KIND=4) VSL_SS_ERROR_BAD_4R_MOM_ADDR
  180. INTEGER(KIND=4) VSL_SS_ERROR_BAD_2C_MOM_ADDR
  181. INTEGER(KIND=4) VSL_SS_ERROR_BAD_3C_MOM_ADDR
  182. INTEGER(KIND=4) VSL_SS_ERROR_BAD_4C_MOM_ADDR
  183. INTEGER(KIND=4) VSL_SS_ERROR_BAD_KURTOSIS_ADDR
  184. INTEGER(KIND=4) VSL_SS_ERROR_BAD_SKEWNESS_ADDR
  185. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MIN_ADDR
  186. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MAX_ADDR
  187. INTEGER(KIND=4) VSL_SS_ERROR_BAD_VARIATION_ADDR
  188. INTEGER(KIND=4) VSL_SS_ERROR_BAD_COV_ADDR
  189. INTEGER(KIND=4) VSL_SS_ERROR_BAD_COR_ADDR
  190. INTEGER(KIND=4) VSL_SS_ERROR_BAD_ACCUM_WEIGHT_ADDR
  191. INTEGER(KIND=4) VSL_SS_ERROR_BAD_QUANT_ORDER_ADDR
  192. INTEGER(KIND=4) VSL_SS_ERROR_BAD_QUANT_ORDER
  193. INTEGER(KIND=4) VSL_SS_ERROR_BAD_QUANT_ADDR
  194. INTEGER(KIND=4) VSL_SS_ERROR_BAD_ORDER_STATS_ADDR
  195. INTEGER(KIND=4) VSL_SS_ERROR_MOMORDER_NOT_SUPPORTED
  196. INTEGER(KIND=4) VSL_SS_ERROR_ALL_OBSERVS_OUTLIERS
  197. INTEGER(KIND=4) VSL_SS_ERROR_BAD_ROBUST_COV_ADDR
  198. INTEGER(KIND=4) VSL_SS_ERROR_BAD_ROBUST_MEAN_ADDR
  199. INTEGER(KIND=4) VSL_SS_ERROR_METHOD_NOT_SUPPORTED
  200. INTEGER(KIND=4) VSL_SS_ERROR_BAD_GROUP_INDC_ADDR
  201. INTEGER(KIND=4) VSL_SS_ERROR_NULL_TASK_DESCRIPTOR
  202. INTEGER(KIND=4) VSL_SS_ERROR_BAD_OBSERV_ADDR
  203. INTEGER(KIND=4) VSL_SS_ERROR_SINGULAR_COV
  204. INTEGER(KIND=4) VSL_SS_ERROR_BAD_POOLED_COV_ADDR
  205. INTEGER(KIND=4) VSL_SS_ERROR_BAD_POOLED_MEAN_ADDR
  206. INTEGER(KIND=4) VSL_SS_ERROR_BAD_GROUP_COV_ADDR
  207. INTEGER(KIND=4) VSL_SS_ERROR_BAD_GROUP_MEAN_ADDR
  208. INTEGER(KIND=4) VSL_SS_ERROR_BAD_GROUP_INDC
  209. INTEGER(KIND=4) VSL_SS_ERROR_BAD_OUTLIERS_PARAMS_ADDR
  210. INTEGER(KIND=4) VSL_SS_ERROR_BAD_OUTLIERS_PARAMS_N_ADDR
  211. INTEGER(KIND=4) VSL_SS_ERROR_BAD_OUTLIERS_WEIGHTS_ADDR
  212. INTEGER(KIND=4) VSL_SS_ERROR_BAD_ROBUST_COV_PARAMS_ADDR
  213. INTEGER(KIND=4) VSL_SS_ERROR_BAD_ROBUST_COV_PARAMS_N_ADDR
  214. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STORAGE_ADDR
  215. INTEGER(KIND=4) VSL_SS_ERROR_BAD_PARTIAL_COV_IDX_ADDR
  216. INTEGER(KIND=4) VSL_SS_ERROR_BAD_PARTIAL_COV_ADDR
  217. INTEGER(KIND=4) VSL_SS_ERROR_BAD_PARTIAL_COR_ADDR
  218. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_PARAMS_ADDR
  219. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_PARAMS_N_ADDR
  220. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_BAD_PARAMS_N
  221. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_PARAMS
  222. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_INIT_ESTIMATES_N_ADDR
  223. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_INIT_ESTIMATES_ADDR
  224. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_SIMUL_VALS_ADDR
  225. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_SIMUL_VALS_N_ADDR
  226. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_ESTIMATES_N_ADDR
  227. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_ESTIMATES_ADDR
  228. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_SIMUL_VALS_N
  229. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_ESTIMATES_N
  230. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_OUTPUT_PARAMS
  231. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_PRIOR_N_ADDR
  232. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_PRIOR_ADDR
  233. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MI_MISSING_VALS_N
  234. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS_N_ADDR
  235. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS_ADDR
  236. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS_N
  237. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS
  238. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_ORDER_ADDR
  239. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_ORDER
  240. INTEGER(KIND=4) VSL_SS_ERROR_BAD_STREAM_QUANT_ADDR
  241. INTEGER(KIND=4) VSL_SS_ERROR_BAD_PARAMTR_COR_ADDR
  242. INTEGER(KIND=4) VSL_SS_ERROR_BAD_COR
  243. INTEGER(KIND=4) VSL_SS_ERROR_BAD_PARTIAL_COV_IDX
  244. INTEGER(KIND=4) VSL_SS_ERROR_BAD_SUM_ADDR
  245. INTEGER(KIND=4) VSL_SS_ERROR_BAD_2R_SUM_ADDR
  246. INTEGER(KIND=4) VSL_SS_ERROR_BAD_3R_SUM_ADDR
  247. INTEGER(KIND=4) VSL_SS_ERROR_BAD_4R_SUM_ADDR
  248. INTEGER(KIND=4) VSL_SS_ERROR_BAD_2C_SUM_ADDR
  249. INTEGER(KIND=4) VSL_SS_ERROR_BAD_3C_SUM_ADDR
  250. INTEGER(KIND=4) VSL_SS_ERROR_BAD_4C_SUM_ADDR
  251. INTEGER(KIND=4) VSL_SS_ERROR_BAD_CP_ADDR
  252. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MDAD_ADDR
  253. INTEGER(KIND=4) VSL_SS_ERROR_BAD_MNAD_ADDR
  254. INTEGER(KIND=4) VSL_SS_ERROR_INDICES_NOT_SUPPORTED
  255. INTEGER(KIND=4) VSL_SS_ERROR_BAD_SORTED_OBSERV_ADDR
  256. PARAMETER (VSL_SS_ERROR_ALLOCATION_FAILURE =-4000)
  257. PARAMETER (VSL_SS_ERROR_BAD_DIMEN =-4001)
  258. PARAMETER (VSL_SS_ERROR_BAD_OBSERV_N =-4002)
  259. PARAMETER (VSL_SS_ERROR_STORAGE_NOT_SUPPORTED =-4003)
  260. PARAMETER (VSL_SS_ERROR_BAD_INDC_ADDR =-4004)
  261. PARAMETER (VSL_SS_ERROR_BAD_WEIGHTS =-4005)
  262. PARAMETER (VSL_SS_ERROR_BAD_MEAN_ADDR =-4006)
  263. PARAMETER (VSL_SS_ERROR_BAD_2R_MOM_ADDR =-4007)
  264. PARAMETER (VSL_SS_ERROR_BAD_3R_MOM_ADDR =-4008)
  265. PARAMETER (VSL_SS_ERROR_BAD_4R_MOM_ADDR =-4009)
  266. PARAMETER (VSL_SS_ERROR_BAD_2C_MOM_ADDR =-4010)
  267. PARAMETER (VSL_SS_ERROR_BAD_3C_MOM_ADDR =-4011)
  268. PARAMETER (VSL_SS_ERROR_BAD_4C_MOM_ADDR =-4012)
  269. PARAMETER (VSL_SS_ERROR_BAD_KURTOSIS_ADDR =-4013)
  270. PARAMETER (VSL_SS_ERROR_BAD_SKEWNESS_ADDR =-4014)
  271. PARAMETER (VSL_SS_ERROR_BAD_MIN_ADDR =-4015)
  272. PARAMETER (VSL_SS_ERROR_BAD_MAX_ADDR =-4016)
  273. PARAMETER (VSL_SS_ERROR_BAD_VARIATION_ADDR =-4017)
  274. PARAMETER (VSL_SS_ERROR_BAD_COV_ADDR =-4018)
  275. PARAMETER (VSL_SS_ERROR_BAD_COR_ADDR =-4019)
  276. PARAMETER (VSL_SS_ERROR_BAD_ACCUM_WEIGHT_ADDR =-4020)
  277. PARAMETER (VSL_SS_ERROR_BAD_QUANT_ORDER_ADDR =-4021)
  278. PARAMETER (VSL_SS_ERROR_BAD_QUANT_ORDER =-4022)
  279. PARAMETER (VSL_SS_ERROR_BAD_QUANT_ADDR =-4023)
  280. PARAMETER (VSL_SS_ERROR_BAD_ORDER_STATS_ADDR =-4024)
  281. PARAMETER (VSL_SS_ERROR_MOMORDER_NOT_SUPPORTED =-4025)
  282. PARAMETER (VSL_SS_ERROR_ALL_OBSERVS_OUTLIERS =-4026)
  283. PARAMETER (VSL_SS_ERROR_BAD_ROBUST_COV_ADDR =-4027)
  284. PARAMETER (VSL_SS_ERROR_BAD_ROBUST_MEAN_ADDR =-4028)
  285. PARAMETER (VSL_SS_ERROR_METHOD_NOT_SUPPORTED =-4029)
  286. PARAMETER (VSL_SS_ERROR_BAD_GROUP_INDC_ADDR =-4030)
  287. PARAMETER (VSL_SS_ERROR_NULL_TASK_DESCRIPTOR =-4031)
  288. PARAMETER (VSL_SS_ERROR_BAD_OBSERV_ADDR =-4032)
  289. PARAMETER (VSL_SS_ERROR_SINGULAR_COV =-4033)
  290. PARAMETER (VSL_SS_ERROR_BAD_POOLED_COV_ADDR =-4034)
  291. PARAMETER (VSL_SS_ERROR_BAD_POOLED_MEAN_ADDR =-4035)
  292. PARAMETER (VSL_SS_ERROR_BAD_GROUP_COV_ADDR =-4036)
  293. PARAMETER (VSL_SS_ERROR_BAD_GROUP_MEAN_ADDR =-4037)
  294. PARAMETER (VSL_SS_ERROR_BAD_GROUP_INDC =-4038)
  295. PARAMETER (VSL_SS_ERROR_BAD_OUTLIERS_PARAMS_ADDR =-4039)
  296. PARAMETER (VSL_SS_ERROR_BAD_OUTLIERS_PARAMS_N_ADDR =-4040)
  297. PARAMETER (VSL_SS_ERROR_BAD_OUTLIERS_WEIGHTS_ADDR =-4041)
  298. PARAMETER (VSL_SS_ERROR_BAD_ROBUST_COV_PARAMS_ADDR =-4042)
  299. PARAMETER (VSL_SS_ERROR_BAD_ROBUST_COV_PARAMS_N_ADDR =-4043)
  300. PARAMETER (VSL_SS_ERROR_BAD_STORAGE_ADDR =-4044)
  301. PARAMETER (VSL_SS_ERROR_BAD_PARTIAL_COV_IDX_ADDR =-4045)
  302. PARAMETER (VSL_SS_ERROR_BAD_PARTIAL_COV_ADDR =-4046)
  303. PARAMETER (VSL_SS_ERROR_BAD_PARTIAL_COR_ADDR =-4047)
  304. PARAMETER (VSL_SS_ERROR_BAD_MI_PARAMS_ADDR =-4048)
  305. PARAMETER (VSL_SS_ERROR_BAD_MI_PARAMS_N_ADDR =-4049)
  306. PARAMETER (VSL_SS_ERROR_BAD_MI_BAD_PARAMS_N =-4050)
  307. PARAMETER (VSL_SS_ERROR_BAD_MI_PARAMS =-4051)
  308. PARAMETER (VSL_SS_ERROR_BAD_MI_INIT_ESTIMATES_N_ADDR =-4052)
  309. PARAMETER (VSL_SS_ERROR_BAD_MI_INIT_ESTIMATES_ADDR =-4053)
  310. PARAMETER (VSL_SS_ERROR_BAD_MI_SIMUL_VALS_ADDR =-4054)
  311. PARAMETER (VSL_SS_ERROR_BAD_MI_SIMUL_VALS_N_ADDR =-4055)
  312. PARAMETER (VSL_SS_ERROR_BAD_MI_ESTIMATES_N_ADDR =-4056)
  313. PARAMETER (VSL_SS_ERROR_BAD_MI_ESTIMATES_ADDR =-4057)
  314. PARAMETER (VSL_SS_ERROR_BAD_MI_SIMUL_VALS_N =-4058)
  315. PARAMETER (VSL_SS_ERROR_BAD_MI_ESTIMATES_N =-4059)
  316. PARAMETER (VSL_SS_ERROR_BAD_MI_OUTPUT_PARAMS =-4060)
  317. PARAMETER (VSL_SS_ERROR_BAD_MI_PRIOR_N_ADDR =-4061)
  318. PARAMETER (VSL_SS_ERROR_BAD_MI_PRIOR_ADDR =-4062)
  319. PARAMETER (VSL_SS_ERROR_BAD_MI_MISSING_VALS_N =-4063)
  320. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS_N_ADDR =-4064)
  321. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS_ADDR =-4065)
  322. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS_N =-4066)
  323. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_PARAMS =-4067)
  324. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_ORDER_ADDR =-4068)
  325. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_ORDER =-4069)
  326. PARAMETER (VSL_SS_ERROR_BAD_STREAM_QUANT_ADDR =-4070)
  327. PARAMETER (VSL_SS_ERROR_BAD_PARAMTR_COR_ADDR =-4071)
  328. PARAMETER (VSL_SS_ERROR_BAD_COR =-4072)
  329. PARAMETER (VSL_SS_ERROR_BAD_PARTIAL_COV_IDX =-4073)
  330. PARAMETER (VSL_SS_ERROR_BAD_SUM_ADDR =-4074)
  331. PARAMETER (VSL_SS_ERROR_BAD_2R_SUM_ADDR =-4075)
  332. PARAMETER (VSL_SS_ERROR_BAD_3R_SUM_ADDR =-4076)
  333. PARAMETER (VSL_SS_ERROR_BAD_4R_SUM_ADDR =-4077)
  334. PARAMETER (VSL_SS_ERROR_BAD_2C_SUM_ADDR =-4078)
  335. PARAMETER (VSL_SS_ERROR_BAD_3C_SUM_ADDR =-4079)
  336. PARAMETER (VSL_SS_ERROR_BAD_4C_SUM_ADDR =-4080)
  337. PARAMETER (VSL_SS_ERROR_BAD_CP_ADDR =-4081)
  338. PARAMETER (VSL_SS_ERROR_BAD_MDAD_ADDR =-4082)
  339. PARAMETER (VSL_SS_ERROR_BAD_MNAD_ADDR =-4083)
  340. PARAMETER (VSL_SS_ERROR_BAD_SORTED_OBSERV_ADDR =-4084)
  341. PARAMETER (VSL_SS_ERROR_INDICES_NOT_SUPPORTED =-4085)
  342. ! Internal errors caused by internal routines of the functions
  343. INTEGER(KIND=4) VSL_SS_ERROR_ROBCOV_INTERN_C1
  344. INTEGER(KIND=4) VSL_SS_ERROR_PARTIALCOV_INTERN_C1
  345. INTEGER(KIND=4) VSL_SS_ERROR_PARTIALCOV_INTERN_C2
  346. INTEGER(KIND=4) VSL_SS_ERROR_MISSINGVALS_INTERN_C1
  347. INTEGER(KIND=4) VSL_SS_ERROR_MISSINGVALS_INTERN_C2
  348. INTEGER(KIND=4) VSL_SS_ERROR_MISSINGVALS_INTERN_C3
  349. INTEGER(KIND=4) VSL_SS_ERROR_MISSINGVALS_INTERN_C4
  350. INTEGER(KIND=4) VSL_SS_ERROR_MISSINGVALS_INTERN_C5
  351. INTEGER(KIND=4) VSL_SS_ERROR_PARAMTRCOR_INTERN_C1
  352. INTEGER(KIND=4) VSL_SS_ERROR_COVRANK_INTERNAL_ERROR_C1
  353. INTEGER(KIND=4) VSL_SS_ERROR_INVCOV_INTERNAL_ERROR_C1
  354. INTEGER(KIND=4) VSL_SS_ERROR_INVCOV_INTERNAL_ERROR_C2
  355. PARAMETER (VSL_SS_ERROR_ROBCOV_INTERN_C1 =-5000)
  356. PARAMETER (VSL_SS_ERROR_PARTIALCOV_INTERN_C1 =-5010)
  357. PARAMETER (VSL_SS_ERROR_PARTIALCOV_INTERN_C2 =-5011)
  358. PARAMETER (VSL_SS_ERROR_MISSINGVALS_INTERN_C1 =-5021)
  359. PARAMETER (VSL_SS_ERROR_MISSINGVALS_INTERN_C2 =-5022)
  360. PARAMETER (VSL_SS_ERROR_MISSINGVALS_INTERN_C3 =-5023)
  361. PARAMETER (VSL_SS_ERROR_MISSINGVALS_INTERN_C4 =-5024)
  362. PARAMETER (VSL_SS_ERROR_MISSINGVALS_INTERN_C5 =-5025)
  363. PARAMETER (VSL_SS_ERROR_PARAMTRCOR_INTERN_C1 =-5030)
  364. PARAMETER (VSL_SS_ERROR_COVRANK_INTERNAL_ERROR_C1 =-5040)
  365. PARAMETER (VSL_SS_ERROR_INVCOV_INTERNAL_ERROR_C1 =-5041)
  366. PARAMETER (VSL_SS_ERROR_INVCOV_INTERNAL_ERROR_C2 =-5042)
  367. !++
  368. ! CONV/CORR RELATED MACRO DEFINITIONS
  369. !--
  370. INTEGER(KIND=4) VSL_CONV_MODE_AUTO
  371. INTEGER(KIND=4) VSL_CORR_MODE_AUTO
  372. INTEGER(KIND=4) VSL_CONV_MODE_DIRECT
  373. INTEGER(KIND=4) VSL_CORR_MODE_DIRECT
  374. INTEGER(KIND=4) VSL_CONV_MODE_FFT
  375. INTEGER(KIND=4) VSL_CORR_MODE_FFT
  376. INTEGER(KIND=4) VSL_CONV_PRECISION_SINGLE
  377. INTEGER(KIND=4) VSL_CORR_PRECISION_SINGLE
  378. INTEGER(KIND=4) VSL_CONV_PRECISION_DOUBLE
  379. INTEGER(KIND=4) VSL_CORR_PRECISION_DOUBLE
  380. PARAMETER (VSL_CONV_MODE_AUTO = 0)
  381. PARAMETER (VSL_CORR_MODE_AUTO = 0)
  382. PARAMETER (VSL_CONV_MODE_DIRECT = 1)
  383. PARAMETER (VSL_CORR_MODE_DIRECT = 1)
  384. PARAMETER (VSL_CONV_MODE_FFT = 2)
  385. PARAMETER (VSL_CORR_MODE_FFT = 2)
  386. PARAMETER (VSL_CONV_PRECISION_SINGLE = 1)
  387. PARAMETER (VSL_CORR_PRECISION_SINGLE = 1)
  388. PARAMETER (VSL_CONV_PRECISION_DOUBLE = 2)
  389. PARAMETER (VSL_CORR_PRECISION_DOUBLE = 2)
  390. !++
  391. ! BASIC RANDOM NUMBER GENERATOR (BRNG) RELATED MACRO DEFINITIONS
  392. !--
  393. ! MAX NUMBER OF BRNGS CAN BE REGISTERED IN VSL
  394. ! No more than VSL_MAX_REG_BRNGS basic generators can be registered in VSL
  395. ! (including predefined basic generators).
  396. !
  397. ! Change this number to increase/decrease number of BRNGs can be registered.
  398. INTEGER VSL_MAX_REG_BRNGS
  399. PARAMETER (VSL_MAX_REG_BRNGS = 512)
  400. ! PREDEFINED BRNG NAMES
  401. INTEGER VSL_BRNG_SHIFT
  402. INTEGER VSL_BRNG_INC
  403. INTEGER VSL_BRNG_MCG31
  404. INTEGER VSL_BRNG_R250
  405. INTEGER VSL_BRNG_MRG32K3A
  406. INTEGER VSL_BRNG_MCG59
  407. INTEGER VSL_BRNG_WH
  408. INTEGER VSL_BRNG_SOBOL
  409. INTEGER VSL_BRNG_NIEDERR
  410. INTEGER VSL_BRNG_MT19937
  411. INTEGER VSL_BRNG_MT2203
  412. INTEGER VSL_BRNG_IABSTRACT
  413. INTEGER VSL_BRNG_DABSTRACT
  414. INTEGER VSL_BRNG_SABSTRACT
  415. INTEGER VSL_BRNG_SFMT19937
  416. INTEGER VSL_BRNG_NONDETERM
  417. INTEGER VSL_BRNG_ARS5
  418. INTEGER VSL_BRNG_PHILOX4X32X10
  419. PARAMETER (VSL_BRNG_SHIFT=20)
  420. PARAMETER (VSL_BRNG_INC=ISHFT(1, VSL_BRNG_SHIFT))
  421. PARAMETER (VSL_BRNG_MCG31 =VSL_BRNG_INC)
  422. PARAMETER (VSL_BRNG_R250 =VSL_BRNG_MCG31 +VSL_BRNG_INC)
  423. PARAMETER (VSL_BRNG_MRG32K3A =VSL_BRNG_R250 +VSL_BRNG_INC)
  424. PARAMETER (VSL_BRNG_MCG59 =VSL_BRNG_MRG32K3A +VSL_BRNG_INC)
  425. PARAMETER (VSL_BRNG_WH =VSL_BRNG_MCG59 +VSL_BRNG_INC)
  426. PARAMETER (VSL_BRNG_SOBOL =VSL_BRNG_WH +VSL_BRNG_INC)
  427. PARAMETER (VSL_BRNG_NIEDERR =VSL_BRNG_SOBOL +VSL_BRNG_INC)
  428. PARAMETER (VSL_BRNG_MT19937 =VSL_BRNG_NIEDERR +VSL_BRNG_INC)
  429. PARAMETER (VSL_BRNG_MT2203 =VSL_BRNG_MT19937 +VSL_BRNG_INC)
  430. PARAMETER (VSL_BRNG_IABSTRACT =VSL_BRNG_MT2203 +VSL_BRNG_INC)
  431. PARAMETER (VSL_BRNG_DABSTRACT =VSL_BRNG_IABSTRACT+VSL_BRNG_INC)
  432. PARAMETER (VSL_BRNG_SABSTRACT =VSL_BRNG_DABSTRACT+VSL_BRNG_INC)
  433. PARAMETER (VSL_BRNG_SFMT19937 =VSL_BRNG_SABSTRACT+VSL_BRNG_INC)
  434. PARAMETER (VSL_BRNG_NONDETERM =VSL_BRNG_SFMT19937+VSL_BRNG_INC)
  435. PARAMETER (VSL_BRNG_ARS5 =VSL_BRNG_NONDETERM+VSL_BRNG_INC)
  436. PARAMETER (VSL_BRNG_PHILOX4X32X10=VSL_BRNG_ARS5 +VSL_BRNG_INC)
  437. ! PREDEFINED PARAMETERS FOR NON-DETERMNINISTIC RANDOM NUMBER
  438. ! GENERATOR
  439. ! The library provides an abstraction to the source of
  440. ! non-deterministic random numbers supported in HW.
  441. ! Current version of the library provides interface to
  442. ! RDRAND-based only, available in latest Intel CPU.
  443. INTEGER(KIND=4) VSL_BRNG_RDRAND
  444. INTEGER(KIND=4) VSL_BRNG_NONDETERM_NRETRIES
  445. PARAMETER (VSL_BRNG_RDRAND = 0)
  446. PARAMETER (VSL_BRNG_NONDETERM_NRETRIES = 10)
  447. ! LEAPFROG METHOD FOR GRAY-CODE BASED QUASI-RANDOM NUMBER BASIC GENERATORS
  448. ! VSL_BRNG_SOBOL and VSL_BRNG_NIEDERR are Gray-code based quasi-random number
  449. ! basic generators. In contrast to pseudorandom number basic generators,
  450. ! quasi-random ones take the dimension as initialization parameter.
  451. !
  452. ! Suppose that quasi-random number generator (QRNG) dimension is S. QRNG
  453. ! sequence is a sequence of S-dimensional vectors:
  454. !
  455. ! x0=(x0[0],x0[1],...,x0[S-1]),x1=(x1[0],x1[1],...,x1[S-1]),...
  456. !
  457. ! VSL treats the output of any basic generator as 1-dimensional, however:
  458. !
  459. ! x0[0],x0[1],...,x0[S-1],x1[0],x1[1],...,x1[S-1],...
  460. !
  461. ! Because of nature of VSL_BRNG_SOBOL and VSL_BRNG_NIEDERR QRNGs,
  462. ! the only S-stride Leapfrog method is supported for them. In other words,
  463. ! user can generate subsequences, which consist of fixed elements of
  464. ! vectors x0,x1,... For example, if 0 element is fixed, the following
  465. ! subsequence is generated:
  466. !
  467. ! x0[1],x1[1],x2[1],...
  468. !
  469. ! To use the s-stride Leapfrog method with given QRNG, user should call
  470. ! vslLeapfrogStream function with parameter k equal to element to be fixed
  471. ! (0<=k<S) and parameter nstreams equal to VSL_QRNG_LEAPFROG_COMPONENTS.
  472. INTEGER VSL_QRNG_LEAPFROG_COMPONENTS
  473. PARAMETER (VSL_QRNG_LEAPFROG_COMPONENTS = INT(Z"7FFFFFFF"))
  474. ! USER-DEFINED PARAMETERS FOR QUASI-RANDOM NUMBER BASIC GENERATORS
  475. ! VSL_BRNG_SOBOL and VSL_BRNG_NIEDERR are Gray-code based quasi-random
  476. ! number basic generators. Default parameters of the generators
  477. ! support generation of quasi-random number vectors of dimensions
  478. ! S<=40 for SOBOL and S<=318 for NIEDERRITER. The library provides
  479. ! opportunity to register user-defined initial values for the
  480. ! generators and generate quasi-random vectors of desirable dimension.
  481. ! There is also opportunity to register user-defined parameters for
  482. ! default dimensions and obtain another sequence of quasi-random vectors.
  483. ! Service function vslNewStreamEx is used to pass the parameters to
  484. ! the library. Data are packed into array params, parameter of the routine.
  485. ! First element of the array is used for dimension S, second element
  486. ! contains indicator, VSL_USER_QRNG_INITIAL_VALUES, of user-defined
  487. ! parameters for quasi-random number generators.
  488. ! Macros VSL_USER_PRIMITIVE_POLYMS and VSL_USER_INIT_DIRECTION_NUMBERS
  489. ! are used to describe which data are passed to SOBOL QRNG and
  490. ! VSL_USER_IRRED_POLYMS - which data are passed to NIEDERRITER QRNG.
  491. ! For example, to demonstrate that both primitive polynomials and initial
  492. ! direction numbers are passed in SOBOL one should set third element of the
  493. ! array params to VSL_USER_PRIMITIVE_POLYMS | VSL_USER_DIRECTION_NUMBERS.
  494. ! Macro VSL_QRNG_OVERRIDE_1ST_DIM_INIT is used to override default
  495. ! initialization for the first dimension. Macro VSL_USER_DIRECTION_NUMBERS
  496. ! is used when direction numbers calculated on the user side are passed
  497. ! into the generators. More detailed description of interface for
  498. ! registration of user-defined QRNG initial parameters can be found
  499. ! in VslNotes.pdf.
  500. INTEGER VSL_USER_QRNG_INITIAL_VALUES
  501. INTEGER VSL_USER_PRIMITIVE_POLYMS
  502. INTEGER VSL_USER_INIT_DIRECTION_NUMBERS
  503. INTEGER VSL_USER_IRRED_POLYMS
  504. INTEGER VSL_USER_DIRECTION_NUMBERS
  505. INTEGER VSL_QRNG_OVERRIDE_1ST_DIM_INIT
  506. PARAMETER (VSL_USER_QRNG_INITIAL_VALUES = 1)
  507. PARAMETER (VSL_USER_PRIMITIVE_POLYMS = 1)
  508. PARAMETER (VSL_USER_INIT_DIRECTION_NUMBERS = 2)
  509. PARAMETER (VSL_USER_IRRED_POLYMS = 1)
  510. PARAMETER (VSL_USER_DIRECTION_NUMBERS = 4)
  511. PARAMETER (VSL_QRNG_OVERRIDE_1ST_DIM_INIT = 8)
  512. ! INITIALIZATION METHODS FOR USER-DESIGNED BASIC RANDOM NUMBER GENERATORS.
  513. ! Each BRNG must support at least VSL_INIT_METHOD_STANDARD initialization
  514. ! method. In addition, VSL_INIT_METHOD_LEAPFROG, VSL_INIT_METHOD_SKIPAHEAD and
  515. ! VSL_INIT_METHOD_SKIPAHEADEX initialization methods can be supported.
  516. !
  517. ! If VSL_INIT_METHOD_LEAPFROG is not supported then initialization routine
  518. ! must return VSL_RNG_ERROR_LEAPFROG_UNSUPPORTED error code.
  519. !
  520. ! If VSL_INIT_METHOD_SKIPAHEAD is not supported then initialization routine
  521. ! must return VSL_RNG_ERROR_SKIPAHEAD_UNSUPPORTED error code.
  522. !
  523. ! If VSL_INIT_METHOD_SKIPAHEADEX is not supported then initialization routine
  524. ! must return VSL_RNG_ERROR_SKIPAHEADEX_UNSUPPORTED error code.
  525. !
  526. ! If there is no error during initialization, the initialization routine must
  527. ! return VSL_ERROR_OK code.
  528. INTEGER VSL_INIT_METHOD_STANDARD
  529. INTEGER VSL_INIT_METHOD_LEAPFROG
  530. INTEGER VSL_INIT_METHOD_SKIPAHEAD
  531. INTEGER VSL_INIT_METHOD_SKIPAHEADEX
  532. PARAMETER (VSL_INIT_METHOD_STANDARD = 0)
  533. PARAMETER (VSL_INIT_METHOD_LEAPFROG = 1)
  534. PARAMETER (VSL_INIT_METHOD_SKIPAHEAD = 2)
  535. PARAMETER (VSL_INIT_METHOD_SKIPAHEADEX = 3)
  536. !++
  537. ! ACCURACY FLAG FOR DISTRIBUTION GENERATORS
  538. ! This flag defines mode of random number generation.
  539. ! If accuracy mode is set distribution generators will produce
  540. ! numbers lying exactly within definitional domain for all values
  541. ! of distribution parameters. In this case slight performance
  542. ! degradation is expected. By default accuracy mode is switched off
  543. ! admitting random numbers to be out of the definitional domain for
  544. ! specific values of distribution parameters.
  545. ! This macro is used to form names for accuracy versions of
  546. ! distribution number generators
  547. !--
  548. INTEGER VSL_RNG_METHOD_ACCURACY_FLAG
  549. PARAMETER (VSL_RNG_METHOD_ACCURACY_FLAG=ISHFT(1,30))
  550. !++
  551. ! TRANSFORMATION METHOD NAMES FOR DISTRIBUTION RANDOM NUMBER GENERATORS
  552. ! VSL interface allows more than one generation method in a distribution
  553. ! transformation subroutine. Following macro definitions are used to
  554. ! specify generation method for given distribution generator.
  555. !
  556. ! Method name macro is constructed as
  557. !
  558. ! VSL_RNG_METHOD_<Distribution>_<Method>
  559. !
  560. ! where
  561. !
  562. ! <Distribution> - probability distribution
  563. ! <Method> - method name
  564. !
  565. ! VSL_RNG_METHOD_<Distribution>_<Method> should be used with
  566. ! vsl<precision>Rng<Distribution> function only, where
  567. !
  568. ! <precision> - s (single) or d (double)
  569. ! <Distribution> - probability distribution
  570. !--
  571. ! Uniform
  572. !
  573. ! <Method> <Short Description>
  574. ! STD standard method. Currently there is only one method for this
  575. ! distribution generator
  576. INTEGER VSL_RNG_METHOD_UNIFORM_STD
  577. PARAMETER (VSL_RNG_METHOD_UNIFORM_STD = 0)
  578. INTEGER VSL_RNG_METHOD_UNIFORM_STD_ACCURATE
  579. PARAMETER (VSL_RNG_METHOD_UNIFORM_STD_ACCURATE= &
  580. & IOR(VSL_RNG_METHOD_UNIFORM_STD, VSL_RNG_METHOD_ACCURACY_FLAG))
  581. ! Uniform Bits
  582. !
  583. ! <Method> <Short Description>
  584. ! STD standard method. Currently there is only one method for this
  585. ! distribution generator
  586. INTEGER VSL_RNG_METHOD_UNIFORMBITS_STD
  587. PARAMETER (VSL_RNG_METHOD_UNIFORMBITS_STD = 0)
  588. ! Uniform Bits 32
  589. !
  590. ! <Method> <Short Description>
  591. ! STD standard method. Currently there is only one method for this
  592. ! distribution generator
  593. INTEGER VSL_RNG_METHOD_UNIFORMBITS32_STD
  594. PARAMETER (VSL_RNG_METHOD_UNIFORMBITS32_STD = 0)
  595. ! Uniform Bits 64
  596. !
  597. ! <Method> <Short Description>
  598. ! STD standard method. Currently there is only one method for this
  599. ! distribution generator
  600. INTEGER VSL_RNG_METHOD_UNIFORMBITS64_STD
  601. PARAMETER (VSL_RNG_METHOD_UNIFORMBITS64_STD = 0)
  602. ! Gaussian
  603. !
  604. ! <Method> <Short Description>
  605. ! BOXMULLER generates normally distributed random number x thru the pair of
  606. ! uniformly distributed numbers u1 and u2 according to the formula:
  607. !
  608. ! x=sqrt(-ln(u1))*sin(2*Pi*u2)
  609. !
  610. ! BOXMULLER2 generates pair of normally distributed random numbers x1 and x2
  611. ! thru the pair of uniformly dustributed numbers u1 and u2
  612. ! according to the formula
  613. !
  614. ! x1=sqrt(-ln(u1))*sin(2*Pi*u2)
  615. ! x2=sqrt(-ln(u1))*cos(2*Pi*u2)
  616. !
  617. ! NOTE: implementation correctly works with odd vector lengths
  618. !
  619. ! ICDF inverse cumulative distribution function method
  620. INTEGER VSL_RNG_METHOD_GAUSSIAN_BOXMULLER
  621. INTEGER VSL_RNG_METHOD_GAUSSIAN_BOXMULLER2
  622. INTEGER VSL_RNG_METHOD_GAUSSIAN_ICDF
  623. PARAMETER (VSL_RNG_METHOD_GAUSSIAN_BOXMULLER = 0)
  624. PARAMETER (VSL_RNG_METHOD_GAUSSIAN_BOXMULLER2 = 1)
  625. PARAMETER (VSL_RNG_METHOD_GAUSSIAN_ICDF = 2)
  626. ! GaussianMV - multivariate (correlated) normal
  627. ! Multivariate (correlated) normal random number generator is based on
  628. ! uncorrelated Gaussian random number generator (see vslsRngGaussian and
  629. ! vsldRngGaussian functions):
  630. !
  631. ! <Method> <Short Description>
  632. ! BOXMULLER generates normally distributed random number x thru the pair of
  633. ! uniformly distributed numbers u1 and u2 according to the formula:
  634. !
  635. ! x=sqrt(-ln(u1))*sin(2*Pi*u2)
  636. !
  637. ! BOXMULLER2 generates pair of normally distributed random numbers x1 and x2
  638. ! thru the pair of uniformly dustributed numbers u1 and u2
  639. ! according to the formula
  640. !
  641. ! x1=sqrt(-ln(u1))*sin(2*Pi*u2)
  642. ! x2=sqrt(-ln(u1))*cos(2*Pi*u2)
  643. !
  644. ! NOTE: implementation correctly works with odd vector lengths
  645. !
  646. ! ICDF inverse cumulative distribution function method
  647. INTEGER VSL_RNG_METHOD_GAUSSIANMV_BOXMULLER
  648. INTEGER VSL_RNG_METHOD_GAUSSIANMV_BOXMULLER2
  649. INTEGER VSL_RNG_METHOD_GAUSSIANMV_ICDF
  650. PARAMETER (VSL_RNG_METHOD_GAUSSIANMV_BOXMULLER = 0)
  651. PARAMETER (VSL_RNG_METHOD_GAUSSIANMV_BOXMULLER2 = 1)
  652. PARAMETER (VSL_RNG_METHOD_GAUSSIANMV_ICDF = 2)
  653. ! Exponential
  654. !
  655. ! <Method> <Short Description>
  656. ! ICDF inverse cumulative distribution function method
  657. INTEGER VSL_RNG_METHOD_EXPONENTIAL_ICDF
  658. PARAMETER (VSL_RNG_METHOD_EXPONENTIAL_ICDF = 0)
  659. INTEGER VSL_RNG_METHOD_EXPONENTIAL_ICDF_ACCURATE
  660. PARAMETER (VSL_RNG_METHOD_EXPONENTIAL_ICDF_ACCURATE= &
  661. &IOR(VSL_RNG_METHOD_EXPONENTIAL_ICDF,VSL_RNG_METHOD_ACCURACY_FLAG))
  662. ! Laplace
  663. !
  664. ! <Method> <Short Description>
  665. ! ICDF inverse cumulative distribution function method
  666. !
  667. ! ICDF - inverse cumulative distribution function method:
  668. !
  669. ! x=+/-ln(u) with probability 1/2,
  670. !
  671. ! where
  672. !
  673. ! x - random number with Laplace distribution,
  674. ! u - uniformly distributed random number
  675. INTEGER VSL_RNG_METHOD_LAPLACE_ICDF
  676. PARAMETER (VSL_RNG_METHOD_LAPLACE_ICDF = 0)
  677. ! Weibull
  678. !
  679. ! <Method> <Short Description>
  680. ! ICDF inverse cumulative distribution function method
  681. INTEGER VSL_RNG_METHOD_WEIBULL_ICDF
  682. PARAMETER (VSL_RNG_METHOD_WEIBULL_ICDF = 0)
  683. INTEGER VSL_RNG_METHOD_WEIBULL_ICDF_ACCURATE
  684. PARAMETER (VSL_RNG_METHOD_WEIBULL_ICDF_ACCURATE= &
  685. & IOR(VSL_RNG_METHOD_WEIBULL_ICDF, VSL_RNG_METHOD_ACCURACY_FLAG))
  686. ! Cauchy
  687. !
  688. ! <Method> <Short Description>
  689. ! ICDF inverse cumulative distribution function method
  690. INTEGER VSL_RNG_METHOD_CAUCHY_ICDF
  691. PARAMETER (VSL_RNG_METHOD_CAUCHY_ICDF = 0)
  692. ! Rayleigh
  693. !
  694. ! <Method> <Short Description>
  695. ! ICDF inverse cumulative distribution function method
  696. INTEGER VSL_RNG_METHOD_RAYLEIGH_ICDF
  697. PARAMETER (VSL_RNG_METHOD_RAYLEIGH_ICDF = 0)
  698. INTEGER VSL_RNG_METHOD_RAYLEIGH_ICDF_ACCURATE
  699. PARAMETER (VSL_RNG_METHOD_RAYLEIGH_ICDF_ACCURATE= &
  700. & IOR(VSL_RNG_METHOD_RAYLEIGH_ICDF, VSL_RNG_METHOD_ACCURACY_FLAG))
  701. ! Lognormal
  702. !
  703. ! <Method> <Short Description>
  704. ! BOXMULLER2 Box-Muller 2 algorithm based method
  705. INTEGER VSL_RNG_METHOD_LOGNORMAL_BOXMULLER2
  706. INTEGER VSL_RNG_METHOD_LOGNORMAL_ICDF
  707. PARAMETER (VSL_RNG_METHOD_LOGNORMAL_BOXMULLER2 = 0)
  708. PARAMETER (VSL_RNG_METHOD_LOGNORMAL_ICDF = 1)
  709. INTEGER VSL_RNG_METHOD_LOGNORMAL_BOXMULLER2_ACCURATE
  710. INTEGER VSL_RNG_METHOD_LOGNORMAL_ICDF_ACCURATE
  711. PARAMETER (VSL_RNG_METHOD_LOGNORMAL_BOXMULLER2_ACCURATE= &
  712. & IOR(VSL_RNG_METHOD_LOGNORMAL_BOXMULLER2, &
  713. & VSL_RNG_METHOD_ACCURACY_FLAG))
  714. PARAMETER (VSL_RNG_METHOD_LOGNORMAL_ICDF_ACCURATE= &
  715. & IOR(VSL_RNG_METHOD_LOGNORMAL_ICDF, VSL_RNG_METHOD_ACCURACY_FLAG))
  716. ! Gumbel
  717. !
  718. ! <Method> <Short Description>
  719. ! ICDF inverse cumulative distribution function method
  720. INTEGER VSL_RNG_METHOD_GUMBEL_ICDF
  721. PARAMETER (VSL_RNG_METHOD_GUMBEL_ICDF = 0)
  722. ! Gamma
  723. !
  724. ! <Method> <Short Description>
  725. ! GNORM nonlinear transformation of gaussian numbers
  726. ! alpha>1, based on acceptance/rejection method with
  727. ! squeezes
  728. !
  729. ! alpha>=0.6, rejection from the Weibull distribution
  730. ! alpha<1
  731. !
  732. ! alpha<0.6, transformation of exponential power distribution
  733. ! (EPD), EPD random numbers are generated using
  734. ! by means of acceptance/rejection technique
  735. INTEGER VSL_RNG_METHOD_GAMMA_GNORM
  736. PARAMETER (VSL_RNG_METHOD_GAMMA_GNORM = 0)
  737. INTEGER VSL_RNG_METHOD_GAMMA_GNORM_ACCURATE
  738. PARAMETER (VSL_RNG_METHOD_GAMMA_GNORM_ACCURATE= &
  739. & IOR(VSL_RNG_METHOD_GAMMA_GNORM, VSL_RNG_METHOD_ACCURACY_FLAG))
  740. ! Beta
  741. !
  742. ! <Method> <Short Description>
  743. ! CJA - stands for first letters of Cheng, Johnk, and Atkinson
  744. ! Cheng - generation of beta random numbers of the second kind
  745. ! min(p,q)>1 based on acceptance/rejection technique and its
  746. ! transformation to beta random numbers of the first kind;
  747. !
  748. ! Johnk, - if q + K*p^2+C<=0, K=0.852..., C=-0.956...
  749. ! Atkinson, algorithm of Johnk: beta distributed random number
  750. ! max(p,q)<1 is generated as u1^(1/p) / (u1^(1/p)+u2^(1/q)),
  751. ! if u1^(1/p)+u2^(1/q)<=1;
  752. ! otherwise switching algorithm of Atkinson:
  753. ! interval (0,1) is divided into two domains (0,t) and (t,1),
  754. ! on each interval acceptance/rejection technique with
  755. ! convenient majorizing function is used;
  756. !
  757. ! Atkinson - switching algorithm of Atkinson is used
  758. ! min(p,q)<1 (with another point t, see short description above);
  759. ! max(p,q)>1
  760. !
  761. ! ICDF - inverse cumulative distribution function method according
  762. ! to formulas x=1-u^(1/q) for p = 1, and x = u^(1/p) for q=1,
  763. ! where x is beta distributed random number,
  764. ! u - uniformly distributed random number.
  765. ! for p=q=1 beta distribution reduces to uniform distribution.
  766. INTEGER VSL_RNG_METHOD_BETA_CJA
  767. PARAMETER (VSL_RNG_METHOD_BETA_CJA = 0)
  768. INTEGER VSL_RNG_METHOD_BETA_CJA_ACCURATE
  769. PARAMETER (VSL_RNG_METHOD_BETA_CJA_ACCURATE= &
  770. & IOR(VSL_RNG_METHOD_BETA_CJA, VSL_RNG_METHOD_ACCURACY_FLAG))
  771. ! ChiSquare
  772. !
  773. ! <Method> <Short Description>
  774. ! CHI2GAMMA
  775. ! v = 1, v = 3 - chi-square distributed random number is
  776. ! generated as a sum of squares of v independent
  777. ! normal random numbers;
  778. ! v is even and v = 16 - chi-square distributed random number is
  779. ! generated using the following formula:
  780. ! x = -2*ln(u[0]*...*u[v/2-1]),
  781. ! where u[i] - random numbers uniformly
  782. ! distributed over the interval (0,1);
  783. ! v > 16, v is odd and v > 3 - chi-square distribution reduces to gamma
  784. ! distribution;
  785. INTEGER VSL_RNG_METHOD_CHISQUARE_CHI2GAMMA
  786. PARAMETER (VSL_RNG_METHOD_CHISQUARE_CHI2GAMMA = 0)
  787. ! Bernoulli
  788. !
  789. ! <Method> <Short Description>
  790. ! ICDF inverse cumulative distribution function method
  791. INTEGER VSL_RNG_METHOD_BERNOULLI_ICDF
  792. PARAMETER (VSL_RNG_METHOD_BERNOULLI_ICDF = 0)
  793. ! Geometric
  794. !
  795. ! <Method> <Short Description>
  796. ! ICDF inverse cumulative distribution function method
  797. INTEGER VSL_RNG_METHOD_GEOMETRIC_ICDF
  798. PARAMETER (VSL_RNG_METHOD_GEOMETRIC_ICDF = 0)
  799. ! Binomial
  800. !
  801. ! <Method> <Short Description>
  802. ! BTPE for ntrial*min(p,1-p)>30 acceptance/rejection method with
  803. ! decomposition onto 4 regions:
  804. !
  805. ! * 2 parallelograms;
  806. ! * triangle;
  807. ! * left exponential tail;
  808. ! * right exponential tail.
  809. !
  810. ! otherwise table lookup method is used
  811. INTEGER VSL_RNG_METHOD_BINOMIAL_BTPE
  812. PARAMETER (VSL_RNG_METHOD_BINOMIAL_BTPE = 0)
  813. ! Multinomial
  814. !
  815. ! <Method> <Short Description>
  816. ! MULTPOISSON Poisson Approximation of Multinomial Distribution method
  817. INTEGER VSL_RNG_METHOD_MULTINOMIAL_MULTPOISSON
  818. PARAMETER (VSL_RNG_METHOD_MULTINOMIAL_MULTPOISSON = 0)
  819. ! Hypergeometric
  820. !
  821. ! <Method> <Short Description>
  822. ! H2PE if mode of distribution is large, acceptance/rejection method is
  823. ! used with decomposition onto 3 regions:
  824. !
  825. ! * rectangular;
  826. ! * left exponential tail;
  827. ! * right exponential tail.
  828. !
  829. ! otherwise table lookup method is used
  830. INTEGER VSL_RNG_METHOD_HYPERGEOMETRIC_H2PE
  831. PARAMETER (VSL_RNG_METHOD_HYPERGEOMETRIC_H2PE = 0)
  832. ! Poisson
  833. !
  834. ! <Method> <Short Description>
  835. ! PTPE if lambda>=27, acceptance/rejection method is used with
  836. ! decomposition onto 4 regions:
  837. !
  838. ! * 2 parallelograms;
  839. ! * triangle;
  840. ! * left exponential tail;
  841. ! * right exponential tail.
  842. !
  843. ! otherwise table lookup method is used
  844. !
  845. ! POISNORM for lambda>=1 method is based on Poisson inverse CDF
  846. ! approximation by Gaussian inverse CDF; for lambda<1
  847. ! table lookup method is used.
  848. INTEGER VSL_RNG_METHOD_POISSON_PTPE
  849. INTEGER VSL_RNG_METHOD_POISSON_POISNORM
  850. PARAMETER (VSL_RNG_METHOD_POISSON_PTPE = 0)
  851. PARAMETER (VSL_RNG_METHOD_POISSON_POISNORM = 1)
  852. ! Poisson
  853. !
  854. ! <Method> <Short Description>
  855. ! POISNORM for lambda>=1 method is based on Poisson inverse CDF
  856. ! approximation by Gaussian inverse CDF; for lambda<1
  857. ! ICDF method is used.
  858. INTEGER VSL_RNG_METHOD_POISSONV_POISNORM
  859. PARAMETER (VSL_RNG_METHOD_POISSONV_POISNORM = 0)
  860. ! Negbinomial
  861. !
  862. ! <Method> <Short Description>
  863. ! NBAR if (a-1)*(1-p)/p>=100, acceptance/rejection method is used with
  864. ! decomposition onto 5 regions:
  865. !
  866. ! * rectangular;
  867. ! * 2 trapezoid;
  868. ! * left exponential tail;
  869. ! * right exponential tail.
  870. !
  871. ! otherwise table lookup method is used.
  872. INTEGER VSL_RNG_METHOD_NEGBINOMIAL_NBAR
  873. PARAMETER (VSL_RNG_METHOD_NEGBINOMIAL_NBAR = 0)
  874. !++
  875. ! MATRIX STORAGE SCHEMES
  876. !--
  877. ! Some multivariate random number generators, e.g. GaussianMV, operate
  878. ! with matrix parameters. To optimize matrix parameters usage VSL offers
  879. ! following matrix storage schemes. (See VSL documentation for more details).
  880. !
  881. ! FULL - whole matrix is stored
  882. ! PACKED - lower/higher triangular matrix is packed in 1-dimensional array
  883. ! DIAGONAL - diagonal elements are packed in 1-dimensional array
  884. INTEGER VSL_MATRIX_STORAGE_FULL
  885. INTEGER VSL_MATRIX_STORAGE_PACKED
  886. INTEGER VSL_MATRIX_STORAGE_DIAGONAL
  887. PARAMETER (VSL_MATRIX_STORAGE_FULL = 0)
  888. PARAMETER (VSL_MATRIX_STORAGE_PACKED = 1)
  889. PARAMETER (VSL_MATRIX_STORAGE_DIAGONAL = 2)
  890. !++
  891. ! SUMMARY STATISTICS (SS) RELATED MACRO DEFINITIONS
  892. !--
  893. !++
  894. ! MATRIX STORAGE SCHEMES
  895. !--
  896. !
  897. ! SS routines work with matrix parameters, e.g. matrix of observations,
  898. ! variance-covariance matrix. To optimize work with matrices the library
  899. ! provides the following storage matrix schemes.
  900. !
  901. !++
  902. ! Matrix of observations:
  903. ! ROWS - observations of the random vector are stored in raws, that
  904. ! is, i-th row of the matrix of observations contains values
  905. ! of i-th component of the random vector
  906. ! COLS - observations of the random vector are stored in columns that
  907. ! is, i-th column of the matrix of observations contains values
  908. ! of i-th component of the random vector
  909. !--
  910. INTEGER VSL_SS_MATRIX_STORAGE_ROWS
  911. INTEGER VSL_SS_MATRIX_STORAGE_COLS
  912. PARAMETER (VSL_SS_MATRIX_STORAGE_ROWS = INT(Z"00010000"))
  913. PARAMETER (VSL_SS_MATRIX_STORAGE_COLS = INT(Z"00020000"))
  914. !++
  915. ! Variance-covariance/correlation matrix:
  916. ! FULL - whole matrix is stored
  917. ! L_PACKED - lower triangular matrix is stored as 1-dimensional array
  918. ! U_PACKED - upper triangular matrix is stored as 1-dimensional array
  919. !--
  920. INTEGER VSL_SS_MATRIX_STORAGE_FULL
  921. INTEGER VSL_SS_MATRIX_STORAGE_L_PACKED
  922. INTEGER VSL_SS_MATRIX_STORAGE_U_PACKED
  923. PARAMETER (VSL_SS_MATRIX_STORAGE_FULL = INT(Z"00000000"))
  924. PARAMETER (VSL_SS_MATRIX_STORAGE_L_PACKED = INT(Z"00000001"))
  925. PARAMETER (VSL_SS_MATRIX_STORAGE_U_PACKED = INT(Z"00000002"))
  926. !++
  927. ! SUMMARY STATISTICS LIBRARY METHODS
  928. !--
  929. ! SS routines provide computation of basic statistical estimates
  930. ! (central/raw moments up to 4th order, variance-covariance,
  931. ! minimum, maximum, skewness/kurtosis) using the following methods
  932. ! - FAST - estimates are computed for price of one or two passes over
  933. ! observations using highly optimized oneMKL routines
  934. ! - 1PASS - estimate is computed for price of one pass of the observations
  935. ! - FAST_USER_MEAN - estimates are computed for price of one or two passes
  936. ! over observations given user defined mean for central moments,
  937. ! covariance and correlation
  938. ! - CP_TO_COVCOR - convert cross-product matrix to variance-covariance/
  939. ! correlation matrix
  940. ! - SUM_TO_MOM - convert raw/central sums to raw/central moments
  941. INTEGER VSL_SS_METHOD_FAST
  942. INTEGER VSL_SS_METHOD_1PASS
  943. INTEGER VSL_SS_METHOD_FAST_USER_MEAN
  944. INTEGER VSL_SS_METHOD_CP_TO_COVCOR
  945. INTEGER VSL_SS_METHOD_SUM_TO_MOM
  946. PARAMETER (VSL_SS_METHOD_FAST = INT(Z"00000001"))
  947. PARAMETER (VSL_SS_METHOD_1PASS = INT(Z"00000002"))
  948. PARAMETER (VSL_SS_METHOD_FAST_USER_MEAN = INT(Z"00000100"))
  949. PARAMETER (VSL_SS_METHOD_CP_TO_COVCOR = INT(Z"00000200"))
  950. PARAMETER (VSL_SS_METHOD_SUM_TO_MOM = INT(Z"00000400"))
  951. ! SS provides routine for parametrization of correlation matrix using
  952. ! SPECTRAL DECOMPOSITION (SD) method
  953. INTEGER VSL_SS_METHOD_SD
  954. PARAMETER (VSL_SS_METHOD_SD = INT(Z"00000004"))
  955. ! SS routine for robust estimation of variance-covariance matrix
  956. ! and mean supports Rocke algorithm, TBS-estimator
  957. INTEGER VSL_SS_METHOD_TBS
  958. PARAMETER (VSL_SS_METHOD_TBS = INT(Z"00000008"))
  959. ! SS routine for estimation of missing values
  960. ! supports Multiple Imputation (MI) method
  961. INTEGER VSL_SS_METHOD_MI
  962. PARAMETER (VSL_SS_METHOD_MI = INT(Z"00000010"))
  963. ! SS routine for sorting data, RADIX method
  964. INTEGER VSL_SS_METHOD_RADIX
  965. PARAMETER (VSL_SS_METHOD_RADIX = INT(Z"00100000"))
  966. ! SS provides routine for detection of outliers, BACON method
  967. INTEGER VSL_SS_METHOD_BACON
  968. PARAMETER (VSL_SS_METHOD_BACON= INT(Z"00000020"))
  969. ! SS supports routine for estimation of quantiles for streaming data
  970. ! using the following methods:
  971. ! - ZW - intermediate estimates of quantiles during processing
  972. ! the next block are computed
  973. ! - ZW - intermediate estimates of quantiles during processing
  974. ! the next block are not computed
  975. INTEGER VSL_SS_METHOD_SQUANTS_ZW
  976. INTEGER VSL_SS_METHOD_SQUANTS_ZW_FAST
  977. PARAMETER (VSL_SS_METHOD_SQUANTS_ZW = INT(Z"00000040"))
  978. PARAMETER (VSL_SS_METHOD_SQUANTS_ZW_FAST = INT(Z"00000080"))
  979. ! Input of BACON algorithm is set of 3 parameters:
  980. ! - Initialization method of the algorithm
  981. ! - Parameter alfa such that 1-alfa is percentile of Chi2 distribution
  982. ! - Stopping criterion
  983. ! Number of BACON algorithm parameters
  984. INTEGER VSL_SS_BACON_PARAMS_N
  985. PARAMETER (VSL_SS_BACON_PARAMS_N = 3)
  986. ! SS implementation of BACON algorithm supports two initialization methods:
  987. ! - Mahalanobis distance based method
  988. ! - Median based method
  989. INTEGER(KIND=4) VSL_SS_METHOD_BACON_MAHALANOBIS_INIT
  990. INTEGER(KIND=4) VSL_SS_METHOD_BACON_MEDIAN_INIT
  991. PARAMETER (VSL_SS_METHOD_BACON_MAHALANOBIS_INIT = &
  992. & INT(Z"00000001", 4))
  993. PARAMETER (VSL_SS_METHOD_BACON_MEDIAN_INIT = &
  994. & INT(Z"00000002", 4))
  995. ! Input of TBS algorithm is set of 4 parameters:
  996. ! - Breakdown point
  997. ! - Asymptotic rejection probability
  998. ! - Stopping criterion
  999. ! - Maximum number of iterations
  1000. ! Number of TBS algorithm parameters
  1001. INTEGER VSL_SS_TBS_PARAMS_N
  1002. PARAMETER (VSL_SS_TBS_PARAMS_N = 4)
  1003. ! Input of MI algorithm is set of 5 parameters:
  1004. ! - Maximal number of iterations for EM algorithm
  1005. ! - Maximal number of iterations for DA algorithm
  1006. ! - Stopping criterion
  1007. ! - Number of sets to impute
  1008. ! - Total number of missing values in dataset
  1009. ! Number of MI algorithm parameters
  1010. INTEGER VSL_SS_MI_PARAMS_SIZE
  1011. PARAMETER (VSL_SS_MI_PARAMS_SIZE = 5)
  1012. ! SS MI algorithm expects that missing values are
  1013. ! marked with NANs
  1014. REAL(KIND=8) VSL_SS_DNAN
  1015. REAL(KIND=4) VSL_SS_SNAN
  1016. PARAMETER (VSL_SS_DNAN = REAL(Z"FFF8000000000000", 8))
  1017. PARAMETER (VSL_SS_SNAN = REAL(Z"FFC00000", 4))
  1018. ! Input of ZW algorithm is 1 parameter:
  1019. ! - accuracy of quantile estimation
  1020. ! Number of ZW algorithm parameters
  1021. INTEGER VSL_SS_SQUANTS_ZW_PARAMS_N
  1022. PARAMETER (VSL_SS_SQUANTS_ZW_PARAMS_N = 1)
  1023. !++
  1024. ! MACROS USED SS EDIT AND COMPUTE ROUTINES
  1025. !--
  1026. ! SS EditTask routine is way to edit input and output parameters of the task,
  1027. ! e.g., pointers to arrays which hold observations, weights of observations,
  1028. ! arrays of mean estimates or covariance estimates.
  1029. ! Macros below define parameters available for modification
  1030. INTEGER VSL_SS_ED_DIMEN
  1031. INTEGER VSL_SS_ED_OBSERV_N
  1032. INTEGER VSL_SS_ED_OBSERV
  1033. INTEGER VSL_SS_ED_OBSERV_STORAGE
  1034. INTEGER VSL_SS_ED_INDC
  1035. INTEGER VSL_SS_ED_WEIGHTS
  1036. INTEGER VSL_SS_ED_MEAN
  1037. INTEGER VSL_SS_ED_2R_MOM
  1038. INTEGER VSL_SS_ED_3R_MOM
  1039. INTEGER VSL_SS_ED_4R_MOM
  1040. INTEGER VSL_SS_ED_2C_MOM
  1041. INTEGER VSL_SS_ED_3C_MOM
  1042. INTEGER VSL_SS_ED_4C_MOM
  1043. INTEGER VSL_SS_ED_KURTOSIS
  1044. INTEGER VSL_SS_ED_SKEWNESS
  1045. INTEGER VSL_SS_ED_MIN
  1046. INTEGER VSL_SS_ED_MAX
  1047. INTEGER VSL_SS_ED_SORTED_OBSERV
  1048. INTEGER VSL_SS_ED_SORTED_OBSERV_STORAGE
  1049. INTEGER VSL_SS_ED_VARIATION
  1050. INTEGER VSL_SS_ED_COV
  1051. INTEGER VSL_SS_ED_COV_STORAGE
  1052. INTEGER VSL_SS_ED_COR
  1053. INTEGER VSL_SS_ED_COR_STORAGE
  1054. INTEGER VSL_SS_ED_ACCUM_WEIGHT
  1055. INTEGER VSL_SS_ED_QUANT_ORDER_N
  1056. INTEGER VSL_SS_ED_QUANT_ORDER
  1057. INTEGER VSL_SS_ED_QUANT_QUANTILES
  1058. INTEGER VSL_SS_ED_ORDER_STATS
  1059. INTEGER VSL_SS_ED_GROUP_INDC
  1060. INTEGER VSL_SS_ED_POOLED_COV_STORAGE
  1061. INTEGER VSL_SS_ED_POOLED_MEAN
  1062. INTEGER VSL_SS_ED_POOLED_COV
  1063. INTEGER VSL_SS_ED_GROUP_COV_INDC
  1064. INTEGER VSL_SS_ED_REQ_GROUP_INDC
  1065. INTEGER VSL_SS_ED_GROUP_MEAN
  1066. INTEGER VSL_SS_ED_GROUP_COV_STORAGE
  1067. INTEGER VSL_SS_ED_GROUP_COV
  1068. INTEGER VSL_SS_ED_ROBUST_COV_STORAGE
  1069. INTEGER VSL_SS_ED_ROBUST_COV_PARAMS_N
  1070. INTEGER VSL_SS_ED_ROBUST_COV_PARAMS
  1071. INTEGER VSL_SS_ED_ROBUST_MEAN
  1072. INTEGER VSL_SS_ED_ROBUST_COV
  1073. INTEGER VSL_SS_ED_OUTLIERS_PARAMS_N
  1074. INTEGER VSL_SS_ED_OUTLIERS_PARAMS
  1075. INTEGER VSL_SS_ED_OUTLIERS_WEIGHT
  1076. INTEGER VSL_SS_ED_ORDER_STATS_STORAGE
  1077. INTEGER VSL_SS_ED_PARTIAL_COV_IDX
  1078. INTEGER VSL_SS_ED_PARTIAL_COV
  1079. INTEGER VSL_SS_ED_PARTIAL_COV_STORAGE
  1080. INTEGER VSL_SS_ED_PARTIAL_COR
  1081. INTEGER VSL_SS_ED_PARTIAL_COR_STORAGE
  1082. INTEGER VSL_SS_ED_MI_PARAMS_N
  1083. INTEGER VSL_SS_ED_MI_PARAMS
  1084. INTEGER VSL_SS_ED_MI_INIT_ESTIMATES_N
  1085. INTEGER VSL_SS_ED_MI_INIT_ESTIMATES
  1086. INTEGER VSL_SS_ED_MI_SIMUL_VALS_N
  1087. INTEGER VSL_SS_ED_MI_SIMUL_VALS
  1088. INTEGER VSL_SS_ED_MI_ESTIMATES_N
  1089. INTEGER VSL_SS_ED_MI_ESTIMATES
  1090. INTEGER VSL_SS_ED_MI_PRIOR_N
  1091. INTEGER VSL_SS_ED_MI_PRIOR
  1092. INTEGER VSL_SS_ED_PARAMTR_COR
  1093. INTEGER VSL_SS_ED_PARAMTR_COR_STORAGE
  1094. INTEGER VSL_SS_ED_STREAM_QUANT_PARAMS_N
  1095. INTEGER VSL_SS_ED_STREAM_QUANT_PARAMS
  1096. INTEGER VSL_SS_ED_STREAM_QUANT_ORDER_N
  1097. INTEGER VSL_SS_ED_STREAM_QUANT_ORDER
  1098. INTEGER VSL_SS_ED_STREAM_QUANT_QUANTILES
  1099. INTEGER VSL_SS_ED_SUM
  1100. INTEGER VSL_SS_ED_2R_SUM
  1101. INTEGER VSL_SS_ED_3R_SUM
  1102. INTEGER VSL_SS_ED_4R_SUM
  1103. INTEGER VSL_SS_ED_2C_SUM
  1104. INTEGER VSL_SS_ED_3C_SUM
  1105. INTEGER VSL_SS_ED_4C_SUM
  1106. INTEGER VSL_SS_ED_CP
  1107. INTEGER VSL_SS_ED_CP_STORAGE
  1108. INTEGER VSL_SS_ED_MDAD
  1109. INTEGER VSL_SS_ED_MNAD
  1110. PARAMETER (VSL_SS_ED_DIMEN = 1)
  1111. PARAMETER (VSL_SS_ED_OBSERV_N = 2)
  1112. PARAMETER (VSL_SS_ED_OBSERV = 3)
  1113. PARAMETER (VSL_SS_ED_OBSERV_STORAGE = 4)
  1114. PARAMETER (VSL_SS_ED_INDC = 5)
  1115. PARAMETER (VSL_SS_ED_WEIGHTS = 6)
  1116. PARAMETER (VSL_SS_ED_MEAN = 7)
  1117. PARAMETER (VSL_SS_ED_2R_MOM = 8)
  1118. PARAMETER (VSL_SS_ED_3R_MOM = 9)
  1119. PARAMETER (VSL_SS_ED_4R_MOM = 10)
  1120. PARAMETER (VSL_SS_ED_2C_MOM = 11)
  1121. PARAMETER (VSL_SS_ED_3C_MOM = 12)
  1122. PARAMETER (VSL_SS_ED_4C_MOM = 13)
  1123. PARAMETER (VSL_SS_ED_KURTOSIS = 14)
  1124. PARAMETER (VSL_SS_ED_SKEWNESS = 15)
  1125. PARAMETER (VSL_SS_ED_MIN = 16)
  1126. PARAMETER (VSL_SS_ED_MAX = 17)
  1127. PARAMETER (VSL_SS_ED_VARIATION = 18)
  1128. PARAMETER (VSL_SS_ED_COV = 19)
  1129. PARAMETER (VSL_SS_ED_COV_STORAGE = 20)
  1130. PARAMETER (VSL_SS_ED_COR = 21)
  1131. PARAMETER (VSL_SS_ED_COR_STORAGE = 22)
  1132. PARAMETER (VSL_SS_ED_ACCUM_WEIGHT = 23)
  1133. PARAMETER (VSL_SS_ED_QUANT_ORDER_N = 24)
  1134. PARAMETER (VSL_SS_ED_QUANT_ORDER = 25)
  1135. PARAMETER (VSL_SS_ED_QUANT_QUANTILES = 26)
  1136. PARAMETER (VSL_SS_ED_ORDER_STATS = 27)
  1137. PARAMETER (VSL_SS_ED_GROUP_INDC = 28)
  1138. PARAMETER (VSL_SS_ED_POOLED_COV_STORAGE = 29)
  1139. PARAMETER (VSL_SS_ED_POOLED_MEAN = 30)
  1140. PARAMETER (VSL_SS_ED_POOLED_COV = 31)
  1141. PARAMETER (VSL_SS_ED_GROUP_COV_INDC = 32)
  1142. PARAMETER (VSL_SS_ED_REQ_GROUP_INDC = 32)
  1143. PARAMETER (VSL_SS_ED_GROUP_MEAN = 33)
  1144. PARAMETER (VSL_SS_ED_GROUP_COV_STORAGE = 34)
  1145. PARAMETER (VSL_SS_ED_GROUP_COV = 35)
  1146. PARAMETER (VSL_SS_ED_ROBUST_COV_STORAGE = 36)
  1147. PARAMETER (VSL_SS_ED_ROBUST_COV_PARAMS_N = 37)
  1148. PARAMETER (VSL_SS_ED_ROBUST_COV_PARAMS = 38)
  1149. PARAMETER (VSL_SS_ED_ROBUST_MEAN = 39)
  1150. PARAMETER (VSL_SS_ED_ROBUST_COV = 40)
  1151. PARAMETER (VSL_SS_ED_OUTLIERS_PARAMS_N = 41)
  1152. PARAMETER (VSL_SS_ED_OUTLIERS_PARAMS = 42)
  1153. PARAMETER (VSL_SS_ED_OUTLIERS_WEIGHT = 43)
  1154. PARAMETER (VSL_SS_ED_ORDER_STATS_STORAGE = 44)
  1155. PARAMETER (VSL_SS_ED_PARTIAL_COV_IDX = 45)
  1156. PARAMETER (VSL_SS_ED_PARTIAL_COV = 46)
  1157. PARAMETER (VSL_SS_ED_PARTIAL_COV_STORAGE = 47)
  1158. PARAMETER (VSL_SS_ED_PARTIAL_COR = 48)
  1159. PARAMETER (VSL_SS_ED_PARTIAL_COR_STORAGE = 49)
  1160. PARAMETER (VSL_SS_ED_MI_PARAMS_N = 50)
  1161. PARAMETER (VSL_SS_ED_MI_PARAMS = 51)
  1162. PARAMETER (VSL_SS_ED_MI_INIT_ESTIMATES_N = 52)
  1163. PARAMETER (VSL_SS_ED_MI_INIT_ESTIMATES = 53)
  1164. PARAMETER (VSL_SS_ED_MI_SIMUL_VALS_N = 54)
  1165. PARAMETER (VSL_SS_ED_MI_SIMUL_VALS = 55)
  1166. PARAMETER (VSL_SS_ED_MI_ESTIMATES_N = 56)
  1167. PARAMETER (VSL_SS_ED_MI_ESTIMATES = 57)
  1168. PARAMETER (VSL_SS_ED_MI_PRIOR_N = 58)
  1169. PARAMETER (VSL_SS_ED_MI_PRIOR = 59)
  1170. PARAMETER (VSL_SS_ED_PARAMTR_COR = 60)
  1171. PARAMETER (VSL_SS_ED_PARAMTR_COR_STORAGE = 61)
  1172. PARAMETER (VSL_SS_ED_STREAM_QUANT_PARAMS_N = 62)
  1173. PARAMETER (VSL_SS_ED_STREAM_QUANT_PARAMS = 63)
  1174. PARAMETER (VSL_SS_ED_STREAM_QUANT_ORDER_N = 64)
  1175. PARAMETER (VSL_SS_ED_STREAM_QUANT_ORDER = 65)
  1176. PARAMETER (VSL_SS_ED_STREAM_QUANT_QUANTILES = 66)
  1177. PARAMETER (VSL_SS_ED_SUM = 67)
  1178. PARAMETER (VSL_SS_ED_2R_SUM = 68)
  1179. PARAMETER (VSL_SS_ED_3R_SUM = 69)
  1180. PARAMETER (VSL_SS_ED_4R_SUM = 70)
  1181. PARAMETER (VSL_SS_ED_2C_SUM = 71)
  1182. PARAMETER (VSL_SS_ED_3C_SUM = 72)
  1183. PARAMETER (VSL_SS_ED_4C_SUM = 73)
  1184. PARAMETER (VSL_SS_ED_CP = 74)
  1185. PARAMETER (VSL_SS_ED_CP_STORAGE = 75)
  1186. PARAMETER (VSL_SS_ED_MDAD = 76)
  1187. PARAMETER (VSL_SS_ED_MNAD = 77)
  1188. PARAMETER (VSL_SS_ED_SORTED_OBSERV = 78)
  1189. PARAMETER (VSL_SS_ED_SORTED_OBSERV_STORAGE = 79)
  1190. ! SS Compute routine calculates estimates supported by the library
  1191. ! Macros below define estimates to compute
  1192. INTEGER(KIND=8) VSL_SS_MEAN
  1193. INTEGER(KIND=8) VSL_SS_2R_MOM
  1194. INTEGER(KIND=8) VSL_SS_3R_MOM
  1195. INTEGER(KIND=8) VSL_SS_4R_MOM
  1196. INTEGER(KIND=8) VSL_SS_2C_MOM
  1197. INTEGER(KIND=8) VSL_SS_3C_MOM
  1198. INTEGER(KIND=8) VSL_SS_4C_MOM
  1199. INTEGER(KIND=8) VSL_SS_SUM
  1200. INTEGER(KIND=8) VSL_SS_2R_SUM
  1201. INTEGER(KIND=8) VSL_SS_3R_SUM
  1202. INTEGER(KIND=8) VSL_SS_4R_SUM
  1203. INTEGER(KIND=8) VSL_SS_2C_SUM
  1204. INTEGER(KIND=8) VSL_SS_3C_SUM
  1205. INTEGER(KIND=8) VSL_SS_4C_SUM
  1206. INTEGER(KIND=8) VSL_SS_KURTOSIS
  1207. INTEGER(KIND=8) VSL_SS_SKEWNESS
  1208. INTEGER(KIND=8) VSL_SS_VARIATION
  1209. INTEGER(KIND=8) VSL_SS_MIN
  1210. INTEGER(KIND=8) VSL_SS_MAX
  1211. INTEGER(KIND=8) VSL_SS_COV
  1212. INTEGER(KIND=8) VSL_SS_COR
  1213. INTEGER(KIND=8) VSL_SS_CP
  1214. INTEGER(KIND=8) VSL_SS_POOLED_COV
  1215. INTEGER(KIND=8) VSL_SS_GROUP_COV
  1216. INTEGER(KIND=8) VSL_SS_POOLED_MEAN
  1217. INTEGER(KIND=8) VSL_SS_GROUP_MEAN
  1218. INTEGER(KIND=8) VSL_SS_QUANTS
  1219. INTEGER(KIND=8) VSL_SS_SORTED_OBSERV
  1220. INTEGER(KIND=8) VSL_SS_ORDER_STATS
  1221. INTEGER(KIND=8) VSL_SS_ROBUST_COV
  1222. INTEGER(KIND=8) VSL_SS_OUTLIERS
  1223. INTEGER(KIND=8) VSL_SS_PARTIAL_COV
  1224. INTEGER(KIND=8) VSL_SS_PARTIAL_COR
  1225. INTEGER(KIND=8) VSL_SS_MISSING_VALS
  1226. INTEGER(KIND=8) VSL_SS_PARAMTR_COR
  1227. INTEGER(KIND=8) VSL_SS_STREAM_QUANTS
  1228. INTEGER(KIND=8) VSL_SS_MDAD
  1229. INTEGER(KIND=8) VSL_SS_MNAD
  1230. PARAMETER ( VSL_SS_MEAN = INT(Z"0000000000000001", 8))
  1231. PARAMETER ( VSL_SS_2R_MOM = INT(Z"0000000000000002", 8))
  1232. PARAMETER ( VSL_SS_3R_MOM = INT(Z"0000000000000004", 8))
  1233. PARAMETER ( VSL_SS_4R_MOM = INT(Z"0000000000000008", 8))
  1234. PARAMETER ( VSL_SS_2C_MOM = INT(Z"0000000000000010", 8))
  1235. PARAMETER ( VSL_SS_3C_MOM = INT(Z"0000000000000020", 8))
  1236. PARAMETER ( VSL_SS_4C_MOM = INT(Z"0000000000000040", 8))
  1237. PARAMETER ( VSL_SS_SUM = INT(Z"0000000002000000", 8))
  1238. PARAMETER ( VSL_SS_2R_SUM = INT(Z"0000000004000000", 8))
  1239. PARAMETER ( VSL_SS_3R_SUM = INT(Z"0000000008000000", 8))
  1240. PARAMETER ( VSL_SS_4R_SUM = INT(Z"0000000010000000", 8))
  1241. PARAMETER ( VSL_SS_2C_SUM = INT(Z"0000000020000000", 8))
  1242. PARAMETER ( VSL_SS_3C_SUM = INT(Z"0000000040000000", 8))
  1243. PARAMETER ( VSL_SS_4C_SUM = INT(Z"0000000080000000", 8))
  1244. PARAMETER ( VSL_SS_KURTOSIS = INT(Z"0000000000000080", 8))
  1245. PARAMETER ( VSL_SS_SKEWNESS = INT(Z"0000000000000100", 8))
  1246. PARAMETER ( VSL_SS_VARIATION = INT(Z"0000000000000200", 8))
  1247. PARAMETER ( VSL_SS_MIN = INT(Z"0000000000000400", 8))
  1248. PARAMETER ( VSL_SS_MAX = INT(Z"0000000000000800", 8))
  1249. PARAMETER ( VSL_SS_COV = INT(Z"0000000000001000", 8))
  1250. PARAMETER ( VSL_SS_COR = INT(Z"0000000000002000", 8))
  1251. PARAMETER ( VSL_SS_CP = INT(Z"0000000100000000", 8))
  1252. PARAMETER ( VSL_SS_POOLED_COV = INT(Z"0000000000004000", 8))
  1253. PARAMETER ( VSL_SS_GROUP_COV = INT(Z"0000000000008000", 8))
  1254. PARAMETER ( VSL_SS_POOLED_MEAN = INT(Z"0000000800000000", 8))
  1255. PARAMETER ( VSL_SS_GROUP_MEAN = INT(Z"0000001000000000", 8))
  1256. PARAMETER ( VSL_SS_QUANTS = INT(Z"0000000000010000", 8))
  1257. PARAMETER ( VSL_SS_SORTED_OBSERV = INT(Z"0000008000000000", 8))
  1258. PARAMETER ( VSL_SS_ORDER_STATS = INT(Z"0000000000020000", 8))
  1259. PARAMETER ( VSL_SS_ROBUST_COV = INT(Z"0000000000040000", 8))
  1260. PARAMETER ( VSL_SS_OUTLIERS = INT(Z"0000000000080000", 8))
  1261. PARAMETER ( VSL_SS_PARTIAL_COV = INT(Z"0000000000100000", 8))
  1262. PARAMETER ( VSL_SS_PARTIAL_COR = INT(Z"0000000000200000", 8))
  1263. PARAMETER ( VSL_SS_MISSING_VALS = INT(Z"0000000000400000", 8))
  1264. PARAMETER ( VSL_SS_PARAMTR_COR = INT(Z"0000000000800000", 8))
  1265. PARAMETER ( VSL_SS_STREAM_QUANTS = INT(Z"0000000001000000", 8))
  1266. PARAMETER ( VSL_SS_MDAD = INT(Z"0000000200000000", 8))
  1267. PARAMETER ( VSL_SS_MNAD = INT(Z"0000000400000000", 8))
  1268. !++
  1269. ! TYPEDEFS
  1270. !--
  1271. ! VSL STREAM STATE POINTER
  1272. ! This structure is to store VSL stream state address allocated by
  1273. ! VSLNEWSTREAM subroutine.
  1274. TYPE VSL_STREAM_STATE
  1275. INTEGER(KIND=4) descriptor1
  1276. INTEGER(KIND=4) descriptor2
  1277. END TYPE VSL_STREAM_STATE
  1278. TYPE VSL_CONV_TASK
  1279. INTEGER(KIND=4) descriptor1
  1280. INTEGER(KIND=4) descriptor2
  1281. END TYPE VSL_CONV_TASK
  1282. TYPE VSL_CORR_TASK
  1283. INTEGER(KIND=4) descriptor1
  1284. INTEGER(KIND=4) descriptor2
  1285. END TYPE VSL_CORR_TASK
  1286. TYPE VSL_SS_TASK
  1287. INTEGER(KIND=4) descriptor1
  1288. INTEGER(KIND=4) descriptor2
  1289. END TYPE VSL_SS_TASK
  1290. ! BASIC RANDOM NUMBER GENERATOR PROPERTIES STRUCTURE
  1291. ! The structure describes the properties of given basic generator, e.g. size
  1292. ! of the stream state structure, pointers to function implementations, etc.
  1293. !
  1294. ! BRNG properties structure fields:
  1295. ! StreamStateSize - size of the stream state structure (in bytes)
  1296. ! WordSize - size of base word (in bytes). Typically this is 4 bytes.
  1297. ! NSeeds - number of words necessary to describe generator's state
  1298. ! NBits - number of bits actually used in base word. For example,
  1299. ! only 31 least significant bits are actually used in
  1300. ! basic random number generator MCG31m1 with 4-byte base
  1301. ! word. NBits field is useful while interpreting random
  1302. ! words as a sequence of random bits.
  1303. ! IncludesZero - FALSE if 0 cannot be generated in integer-valued
  1304. ! implementation; TRUE if 0 can be potentially generated in
  1305. ! integer-valued implementation.
  1306. ! reserved - a reserved field for internal needs
  1307. TYPE VSL_BRNG_PROPERTIES
  1308. INTEGER(KIND=4) streamstatesize
  1309. INTEGER(KIND=4) nseeds
  1310. INTEGER(KIND=4) includeszero
  1311. INTEGER(KIND=4) wordsize
  1312. INTEGER(KIND=4) nbits
  1313. INTEGER(KIND=4) reserved(8)
  1314. END TYPE VSL_BRNG_PROPERTIES
  1315. END MODULE MKL_VSL_TYPE
  1316. MODULE MKL_VSL
  1317. USE MKL_VSL_TYPE
  1318. !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1319. !==============================================================================
  1320. !------------------------------------------------------------------------------
  1321. INTERFACE
  1322. INTEGER FUNCTION vsldconvnewtask( task, mode, dims, xshape, &
  1323. & yshape, zshape )
  1324. USE MKL_VSL_TYPE
  1325. TYPE(VSL_CONV_TASK) :: task
  1326. INTEGER :: mode,dims
  1327. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1328. END FUNCTION
  1329. END INTERFACE
  1330. INTERFACE
  1331. INTEGER FUNCTION vslsconvnewtask( task, mode, dims, xshape, &
  1332. & yshape, zshape )
  1333. USE MKL_VSL_TYPE
  1334. TYPE(VSL_CONV_TASK) :: task
  1335. INTEGER :: mode,dims
  1336. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1337. END FUNCTION
  1338. END INTERFACE
  1339. INTERFACE
  1340. INTEGER FUNCTION vslzconvnewtask( task, mode, dims, xshape, &
  1341. & yshape, zshape )
  1342. USE MKL_VSL_TYPE
  1343. TYPE(VSL_CONV_TASK) :: task
  1344. INTEGER :: mode,dims
  1345. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1346. END FUNCTION
  1347. END INTERFACE
  1348. INTERFACE
  1349. INTEGER FUNCTION vslcconvnewtask( task, mode, dims, xshape, &
  1350. & yshape, zshape )
  1351. USE MKL_VSL_TYPE
  1352. TYPE(VSL_CONV_TASK) :: task
  1353. INTEGER :: mode,dims
  1354. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1355. END FUNCTION
  1356. END INTERFACE
  1357. INTERFACE
  1358. INTEGER FUNCTION vsldcorrnewtask( task, mode, dims, xshape, &
  1359. & yshape, zshape )
  1360. USE MKL_VSL_TYPE
  1361. TYPE(VSL_CORR_TASK) :: task
  1362. INTEGER :: mode,dims
  1363. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1364. END FUNCTION
  1365. END INTERFACE
  1366. INTERFACE
  1367. INTEGER FUNCTION vslscorrnewtask( task, mode, dims, xshape, &
  1368. & yshape, zshape )
  1369. USE MKL_VSL_TYPE
  1370. TYPE(VSL_CORR_TASK) :: task
  1371. INTEGER :: mode,dims
  1372. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1373. END FUNCTION
  1374. END INTERFACE
  1375. INTERFACE
  1376. INTEGER FUNCTION vslzcorrnewtask( task, mode, dims, xshape, &
  1377. & yshape, zshape )
  1378. USE MKL_VSL_TYPE
  1379. TYPE(VSL_CORR_TASK) :: task
  1380. INTEGER :: mode,dims
  1381. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1382. END FUNCTION
  1383. END INTERFACE
  1384. INTERFACE
  1385. INTEGER FUNCTION vslccorrnewtask( task, mode, dims, xshape, &
  1386. & yshape, zshape )
  1387. USE MKL_VSL_TYPE
  1388. TYPE(VSL_CORR_TASK) :: task
  1389. INTEGER :: mode,dims
  1390. INTEGER :: xshape(dims),yshape(dims),zshape(dims)
  1391. END FUNCTION
  1392. END INTERFACE
  1393. INTERFACE
  1394. INTEGER FUNCTION vsldconvnewtask1d( task, mode, xshape, yshape, &
  1395. & zshape )
  1396. USE MKL_VSL_TYPE
  1397. TYPE(VSL_CONV_TASK) :: task
  1398. INTEGER :: mode
  1399. INTEGER :: xshape,yshape,zshape
  1400. END FUNCTION
  1401. END INTERFACE
  1402. INTERFACE
  1403. INTEGER FUNCTION vslsconvnewtask1d( task, mode, xshape, yshape, &
  1404. & zshape )
  1405. USE MKL_VSL_TYPE
  1406. TYPE(VSL_CONV_TASK) :: task
  1407. INTEGER :: mode
  1408. INTEGER :: xshape,yshape,zshape
  1409. END FUNCTION
  1410. END INTERFACE
  1411. INTERFACE
  1412. INTEGER FUNCTION vslzconvnewtask1d( task, mode, xshape, yshape, &
  1413. & zshape )
  1414. USE MKL_VSL_TYPE
  1415. TYPE(VSL_CONV_TASK) :: task
  1416. INTEGER :: mode
  1417. INTEGER :: xshape,yshape,zshape
  1418. END FUNCTION
  1419. END INTERFACE
  1420. INTERFACE
  1421. INTEGER FUNCTION vslcconvnewtask1d( task, mode, xshape, yshape, &
  1422. & zshape )
  1423. USE MKL_VSL_TYPE
  1424. TYPE(VSL_CONV_TASK) :: task
  1425. INTEGER :: mode
  1426. INTEGER :: xshape,yshape,zshape
  1427. END FUNCTION
  1428. END INTERFACE
  1429. INTERFACE
  1430. INTEGER FUNCTION vsldcorrnewtask1d( task, mode, xshape, yshape, &
  1431. & zshape )
  1432. USE MKL_VSL_TYPE
  1433. TYPE(VSL_CORR_TASK) :: task
  1434. INTEGER :: mode
  1435. INTEGER :: xshape,yshape,zshape
  1436. END FUNCTION
  1437. END INTERFACE
  1438. INTERFACE
  1439. INTEGER FUNCTION vslscorrnewtask1d( task, mode, xshape, yshape, &
  1440. & zshape )
  1441. USE MKL_VSL_TYPE
  1442. TYPE(VSL_CORR_TASK) :: task
  1443. INTEGER :: mode
  1444. INTEGER :: xshape,yshape,zshape
  1445. END FUNCTION
  1446. END INTERFACE
  1447. INTERFACE
  1448. INTEGER FUNCTION vslzcorrnewtask1d( task, mode, xshape, yshape, &
  1449. & zshape )
  1450. USE MKL_VSL_TYPE
  1451. TYPE(VSL_CORR_TASK) :: task
  1452. INTEGER :: mode
  1453. INTEGER :: xshape,yshape,zshape
  1454. END FUNCTION
  1455. END INTERFACE
  1456. INTERFACE
  1457. INTEGER FUNCTION vslccorrnewtask1d( task, mode, xshape, yshape, &
  1458. & zshape )
  1459. USE MKL_VSL_TYPE
  1460. TYPE(VSL_CORR_TASK) :: task
  1461. INTEGER :: mode
  1462. INTEGER :: xshape,yshape,zshape
  1463. END FUNCTION
  1464. END INTERFACE
  1465. INTERFACE
  1466. INTEGER FUNCTION vsldconvnewtaskx( task, mode, dims, xshape, &
  1467. & yshape, zshape, x, xstride )
  1468. USE MKL_VSL_TYPE
  1469. TYPE(VSL_CONV_TASK) :: task
  1470. INTEGER :: mode,dims
  1471. INTEGER :: xshape(dims),yshape(dims)
  1472. INTEGER :: zshape(dims),xstride(dims)
  1473. REAL(8),DIMENSION(*):: x
  1474. END FUNCTION
  1475. END INTERFACE
  1476. INTERFACE
  1477. INTEGER FUNCTION vslsconvnewtaskx( task, mode, dims, xshape, &
  1478. & yshape, zshape, x, xstride )
  1479. USE MKL_VSL_TYPE
  1480. TYPE(VSL_CONV_TASK) :: task
  1481. INTEGER :: mode,dims
  1482. INTEGER :: xshape(dims),yshape(dims)
  1483. INTEGER :: zshape(dims),xstride(dims)
  1484. REAL(4),DIMENSION(*):: x
  1485. END FUNCTION
  1486. END INTERFACE
  1487. INTERFACE
  1488. INTEGER FUNCTION vslzconvnewtaskx( task, mode, dims, xshape, &
  1489. & yshape, zshape, x, xstride )
  1490. USE MKL_VSL_TYPE
  1491. TYPE(VSL_CONV_TASK) :: task
  1492. INTEGER :: mode,dims
  1493. INTEGER :: xshape(dims),yshape(dims)
  1494. INTEGER :: zshape(dims),xstride(dims)
  1495. COMPLEX(8),DIMENSION(*):: x
  1496. END FUNCTION
  1497. END INTERFACE
  1498. INTERFACE
  1499. INTEGER FUNCTION vslcconvnewtaskx( task, mode, dims, xshape, &
  1500. & yshape, zshape, x, xstride )
  1501. USE MKL_VSL_TYPE
  1502. TYPE(VSL_CONV_TASK) :: task
  1503. INTEGER :: mode,dims
  1504. INTEGER :: xshape(dims),yshape(dims)
  1505. INTEGER :: zshape(dims),xstride(dims)
  1506. COMPLEX(4),DIMENSION(*):: x
  1507. END FUNCTION
  1508. END INTERFACE
  1509. INTERFACE
  1510. INTEGER FUNCTION vsldcorrnewtaskx( task, mode, dims, xshape, &
  1511. & yshape, zshape, x, xstride )
  1512. USE MKL_VSL_TYPE
  1513. TYPE(VSL_CORR_TASK) :: task
  1514. INTEGER :: mode,dims
  1515. INTEGER :: xshape(dims),yshape(dims)
  1516. INTEGER :: zshape(dims),xstride(dims)
  1517. REAL(8),DIMENSION(*):: x
  1518. END FUNCTION
  1519. END INTERFACE
  1520. INTERFACE
  1521. INTEGER FUNCTION vslscorrnewtaskx( task, mode, dims, xshape, &
  1522. & yshape, zshape, x, xstride )
  1523. USE MKL_VSL_TYPE
  1524. TYPE(VSL_CORR_TASK) :: task
  1525. INTEGER :: mode,dims
  1526. INTEGER :: xshape(dims),yshape(dims)
  1527. INTEGER :: zshape(dims),xstride(dims)
  1528. REAL(4),DIMENSION(*):: x
  1529. END FUNCTION
  1530. END INTERFACE
  1531. INTERFACE
  1532. INTEGER FUNCTION vslzcorrnewtaskx( task, mode, dims, xshape, &
  1533. & yshape, zshape, x, xstride )
  1534. USE MKL_VSL_TYPE
  1535. TYPE(VSL_CORR_TASK) :: task
  1536. INTEGER :: mode,dims
  1537. INTEGER :: xshape(dims),yshape(dims)
  1538. INTEGER :: zshape(dims),xstride(dims)
  1539. COMPLEX(8),DIMENSION(*):: x
  1540. END FUNCTION
  1541. END INTERFACE
  1542. INTERFACE
  1543. INTEGER FUNCTION vslccorrnewtaskx( task, mode, dims, xshape, &
  1544. & yshape, zshape, x, xstride )
  1545. USE MKL_VSL_TYPE
  1546. TYPE(VSL_CORR_TASK) :: task
  1547. INTEGER :: mode,dims
  1548. INTEGER :: xshape(dims),yshape(dims)
  1549. INTEGER :: zshape(dims),xstride(dims)
  1550. COMPLEX(4),DIMENSION(*):: x
  1551. END FUNCTION
  1552. END INTERFACE
  1553. INTERFACE
  1554. INTEGER FUNCTION vsldconvnewtaskx1d( task, mode, xshape, &
  1555. & yshape, zshape, x,xstride)
  1556. USE MKL_VSL_TYPE
  1557. TYPE(VSL_CONV_TASK) :: task
  1558. INTEGER :: mode
  1559. INTEGER :: xshape,yshape,zshape,xstride
  1560. REAL(8),DIMENSION(*):: x
  1561. END FUNCTION
  1562. END INTERFACE
  1563. INTERFACE
  1564. INTEGER FUNCTION vslsconvnewtaskx1d( task, mode, xshape, &
  1565. & yshape, zshape, x,xstride)
  1566. USE MKL_VSL_TYPE
  1567. TYPE(VSL_CONV_TASK) :: task
  1568. INTEGER :: mode
  1569. INTEGER :: xshape,yshape,zshape,xstride
  1570. REAL(4),DIMENSION(*):: x
  1571. END FUNCTION
  1572. END INTERFACE
  1573. INTERFACE
  1574. INTEGER FUNCTION vslzconvnewtaskx1d( task, mode, xshape, &
  1575. & yshape, zshape, x,xstride)
  1576. USE MKL_VSL_TYPE
  1577. TYPE(VSL_CONV_TASK) :: task
  1578. INTEGER :: mode
  1579. INTEGER :: xshape,yshape,zshape,xstride
  1580. COMPLEX(8),DIMENSION(*):: x
  1581. END FUNCTION
  1582. END INTERFACE
  1583. INTERFACE
  1584. INTEGER FUNCTION vslcconvnewtaskx1d( task, mode, xshape, &
  1585. & yshape, zshape, x,xstride)
  1586. USE MKL_VSL_TYPE
  1587. TYPE(VSL_CONV_TASK) :: task
  1588. INTEGER :: mode
  1589. INTEGER :: xshape,yshape,zshape,xstride
  1590. COMPLEX(4),DIMENSION(*):: x
  1591. END FUNCTION
  1592. END INTERFACE
  1593. INTERFACE
  1594. INTEGER FUNCTION vsldcorrnewtaskx1d( task, mode, xshape, &
  1595. & yshape, zshape, x,xstride)
  1596. USE MKL_VSL_TYPE
  1597. TYPE(VSL_CORR_TASK) :: task
  1598. INTEGER :: mode
  1599. INTEGER :: xshape,yshape,zshape,xstride
  1600. REAL(8),DIMENSION(*):: x
  1601. END FUNCTION
  1602. END INTERFACE
  1603. INTERFACE
  1604. INTEGER FUNCTION vslscorrnewtaskx1d( task, mode, xshape, &
  1605. & yshape, zshape, x,xstride)
  1606. USE MKL_VSL_TYPE
  1607. TYPE(VSL_CORR_TASK) :: task
  1608. INTEGER :: mode
  1609. INTEGER :: xshape,yshape,zshape,xstride
  1610. REAL(4),DIMENSION(*):: x
  1611. END FUNCTION
  1612. END INTERFACE
  1613. INTERFACE
  1614. INTEGER FUNCTION vslzcorrnewtaskx1d( task, mode, xshape, &
  1615. & yshape, zshape, x,xstride)
  1616. USE MKL_VSL_TYPE
  1617. TYPE(VSL_CORR_TASK) :: task
  1618. INTEGER :: mode
  1619. INTEGER :: xshape,yshape,zshape,xstride
  1620. COMPLEX(8),DIMENSION(*):: x
  1621. END FUNCTION
  1622. END INTERFACE
  1623. INTERFACE
  1624. INTEGER FUNCTION vslccorrnewtaskx1d( task, mode, xshape, &
  1625. & yshape, zshape, x,xstride)
  1626. USE MKL_VSL_TYPE
  1627. TYPE(VSL_CORR_TASK) :: task
  1628. INTEGER :: mode
  1629. INTEGER :: xshape,yshape,zshape,xstride
  1630. COMPLEX(4),DIMENSION(*):: x
  1631. END FUNCTION
  1632. END INTERFACE
  1633. INTERFACE
  1634. INTEGER FUNCTION vslconvdeletetask( task )
  1635. USE MKL_VSL_TYPE
  1636. TYPE(VSL_CONV_TASK) :: task
  1637. END FUNCTION
  1638. END INTERFACE
  1639. INTERFACE
  1640. INTEGER FUNCTION vslcorrdeletetask( task )
  1641. USE MKL_VSL_TYPE
  1642. TYPE(VSL_CORR_TASK) :: task
  1643. END FUNCTION
  1644. END INTERFACE
  1645. INTERFACE
  1646. INTEGER FUNCTION vslconvcopytask( desttask, srctask )
  1647. USE MKL_VSL_TYPE
  1648. TYPE(VSL_CONV_TASK) :: desttask
  1649. TYPE(VSL_CONV_TASK) :: srctask
  1650. END FUNCTION
  1651. END INTERFACE
  1652. INTERFACE
  1653. INTEGER FUNCTION vslcorrcopytask( desttask, srctask )
  1654. USE MKL_VSL_TYPE
  1655. TYPE(VSL_CORR_TASK) :: desttask
  1656. TYPE(VSL_CORR_TASK) :: srctask
  1657. END FUNCTION
  1658. END INTERFACE
  1659. INTERFACE
  1660. INTEGER FUNCTION vslConvSetMode( task, newmode )
  1661. USE MKL_VSL_TYPE
  1662. TYPE(VSL_CONV_TASK) :: task
  1663. INTEGER :: newmode
  1664. END FUNCTION
  1665. END INTERFACE
  1666. INTERFACE
  1667. INTEGER FUNCTION vslCorrSetMode( task, newmode )
  1668. USE MKL_VSL_TYPE
  1669. TYPE(VSL_CORR_TASK) :: task
  1670. INTEGER :: newmode
  1671. END FUNCTION
  1672. END INTERFACE
  1673. INTERFACE
  1674. INTEGER FUNCTION vslConvSetInternalPrecision( task, precision )
  1675. USE MKL_VSL_TYPE
  1676. TYPE(VSL_CONV_TASK) :: task
  1677. INTEGER :: precision
  1678. END FUNCTION
  1679. END INTERFACE
  1680. INTERFACE
  1681. INTEGER FUNCTION vslCorrSetInternalPrecision( task, precision )
  1682. USE MKL_VSL_TYPE
  1683. TYPE(VSL_CORR_TASK) :: task
  1684. INTEGER :: precision
  1685. END FUNCTION
  1686. END INTERFACE
  1687. INTERFACE
  1688. INTEGER FUNCTION vslConvSetStart( task, start )
  1689. USE MKL_VSL_TYPE
  1690. TYPE(VSL_CONV_TASK) :: task
  1691. INTEGER,DIMENSION(*):: start
  1692. END FUNCTION
  1693. END INTERFACE
  1694. INTERFACE
  1695. INTEGER FUNCTION vslCorrSetStart( task, start )
  1696. USE MKL_VSL_TYPE
  1697. TYPE(VSL_CORR_TASK) :: task
  1698. INTEGER,DIMENSION(*):: start
  1699. END FUNCTION
  1700. END INTERFACE
  1701. INTERFACE
  1702. INTEGER FUNCTION vslConvSetDecimation( task, decimation )
  1703. USE MKL_VSL_TYPE
  1704. TYPE(VSL_CONV_TASK) :: task
  1705. INTEGER,DIMENSION(*):: decimation
  1706. END FUNCTION
  1707. END INTERFACE
  1708. INTERFACE
  1709. INTEGER FUNCTION vslCorrSetDecimation( task, decimation )
  1710. USE MKL_VSL_TYPE
  1711. TYPE(VSL_CORR_TASK) :: task
  1712. INTEGER,DIMENSION(*):: decimation
  1713. END FUNCTION
  1714. END INTERFACE
  1715. INTERFACE
  1716. INTEGER FUNCTION vsldconvexec( task, x, xstride, y, ystride, z, &
  1717. & zstride )
  1718. USE MKL_VSL_TYPE
  1719. TYPE(VSL_CONV_TASK) :: task
  1720. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1721. REAL(KIND=8),DIMENSION(*):: x,y,z
  1722. END FUNCTION
  1723. END INTERFACE
  1724. INTERFACE
  1725. INTEGER FUNCTION vslsconvexec( task, x, xstride, y, ystride, z, &
  1726. & zstride )
  1727. USE MKL_VSL_TYPE
  1728. TYPE(VSL_CONV_TASK) :: task
  1729. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1730. REAL(KIND=4),DIMENSION(*):: x,y,z
  1731. END FUNCTION
  1732. END INTERFACE
  1733. INTERFACE
  1734. INTEGER FUNCTION vslzconvexec( task, x, xstride, y, ystride, z, &
  1735. & zstride )
  1736. USE MKL_VSL_TYPE
  1737. TYPE(VSL_CONV_TASK) :: task
  1738. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1739. COMPLEX(KIND=8),DIMENSION(*):: x,y,z
  1740. END FUNCTION
  1741. END INTERFACE
  1742. INTERFACE
  1743. INTEGER FUNCTION vslcconvexec( task, x, xstride, y, ystride, z, &
  1744. & zstride )
  1745. USE MKL_VSL_TYPE
  1746. TYPE(VSL_CONV_TASK) :: task
  1747. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1748. COMPLEX(KIND=4),DIMENSION(*):: x,y,z
  1749. END FUNCTION
  1750. END INTERFACE
  1751. INTERFACE
  1752. INTEGER FUNCTION vsldcorrexec( task, x, xstride, y, ystride, z, &
  1753. & zstride )
  1754. USE MKL_VSL_TYPE
  1755. TYPE(VSL_CORR_TASK) :: task
  1756. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1757. REAL(KIND=8),DIMENSION(*):: x,y,z
  1758. END FUNCTION
  1759. END INTERFACE
  1760. INTERFACE
  1761. INTEGER FUNCTION vslscorrexec( task, x, xstride, y, ystride, z, &
  1762. & zstride )
  1763. USE MKL_VSL_TYPE
  1764. TYPE(VSL_CORR_TASK) :: task
  1765. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1766. REAL(KIND=4),DIMENSION(*):: x,y,z
  1767. END FUNCTION
  1768. END INTERFACE
  1769. INTERFACE
  1770. INTEGER FUNCTION vslzcorrexec( task, x, xstride, y, ystride, z, &
  1771. & zstride )
  1772. USE MKL_VSL_TYPE
  1773. TYPE(VSL_CORR_TASK) :: task
  1774. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1775. COMPLEX(KIND=8),DIMENSION(*):: x,y,z
  1776. END FUNCTION
  1777. END INTERFACE
  1778. INTERFACE
  1779. INTEGER FUNCTION vslccorrexec( task, x, xstride, y, ystride, z, &
  1780. & zstride )
  1781. USE MKL_VSL_TYPE
  1782. TYPE(VSL_CORR_TASK) :: task
  1783. INTEGER,DIMENSION(*) :: xstride,ystride,zstride
  1784. COMPLEX(KIND=4),DIMENSION(*):: x,y,z
  1785. END FUNCTION
  1786. END INTERFACE
  1787. INTERFACE
  1788. INTEGER FUNCTION vsldconvexec1d( task, x, xstride, y, ystride, &
  1789. & z, zstride )
  1790. USE MKL_VSL_TYPE
  1791. TYPE(VSL_CONV_TASK) :: task
  1792. INTEGER :: xstride,ystride,zstride
  1793. REAL(KIND=8),DIMENSION(*):: x,y,z
  1794. END FUNCTION
  1795. END INTERFACE
  1796. INTERFACE
  1797. INTEGER FUNCTION vslsconvexec1d( task, x, xstride, y, ystride, &
  1798. & z, zstride )
  1799. USE MKL_VSL_TYPE
  1800. TYPE(VSL_CONV_TASK) :: task
  1801. INTEGER :: xstride,ystride,zstride
  1802. REAL(KIND=4),DIMENSION(*):: x,y,z
  1803. END FUNCTION
  1804. END INTERFACE
  1805. INTERFACE
  1806. INTEGER FUNCTION vslzconvexec1d( task, x, xstride, y, ystride, &
  1807. & z, zstride )
  1808. USE MKL_VSL_TYPE
  1809. TYPE(VSL_CONV_TASK) :: task
  1810. INTEGER :: xstride,ystride,zstride
  1811. COMPLEX(KIND=8),DIMENSION(*):: x,y,z
  1812. END FUNCTION
  1813. END INTERFACE
  1814. INTERFACE
  1815. INTEGER FUNCTION vslcconvexec1d( task, x, xstride, y, ystride, &
  1816. & z, zstride )
  1817. USE MKL_VSL_TYPE
  1818. TYPE(VSL_CONV_TASK) :: task
  1819. INTEGER :: xstride,ystride,zstride
  1820. COMPLEX(KIND=4),DIMENSION(*):: x,y,z
  1821. END FUNCTION
  1822. END INTERFACE
  1823. INTERFACE
  1824. INTEGER FUNCTION vsldcorrexec1d( task, x, xstride, y, ystride, &
  1825. & z, zstride )
  1826. USE MKL_VSL_TYPE
  1827. TYPE(VSL_CORR_TASK) :: task
  1828. INTEGER :: xstride,ystride,zstride
  1829. REAL(KIND=8),DIMENSION(*):: x,y,z
  1830. END FUNCTION
  1831. END INTERFACE
  1832. INTERFACE
  1833. INTEGER FUNCTION vslscorrexec1d( task, x, xstride, y, ystride, &
  1834. & z, zstride )
  1835. USE MKL_VSL_TYPE
  1836. TYPE(VSL_CORR_TASK) :: task
  1837. INTEGER :: xstride,ystride,zstride
  1838. REAL(KIND=4),DIMENSION(*):: x,y,z
  1839. END FUNCTION
  1840. END INTERFACE
  1841. INTERFACE
  1842. INTEGER FUNCTION vslzcorrexec1d( task, x, xstride, y, ystride, &
  1843. & z, zstride )
  1844. USE MKL_VSL_TYPE
  1845. TYPE(VSL_CORR_TASK) :: task
  1846. INTEGER :: xstride,ystride,zstride
  1847. COMPLEX(KIND=8),DIMENSION(*):: x,y,z
  1848. END FUNCTION
  1849. END INTERFACE
  1850. INTERFACE
  1851. INTEGER FUNCTION vslccorrexec1d( task, x, xstride, y, ystride, &
  1852. & z, zstride )
  1853. USE MKL_VSL_TYPE
  1854. TYPE(VSL_CORR_TASK) :: task
  1855. INTEGER :: xstride,ystride,zstride
  1856. COMPLEX(KIND=4),DIMENSION(*):: x,y,z
  1857. END FUNCTION
  1858. END INTERFACE
  1859. INTERFACE
  1860. INTEGER FUNCTION vsldconvexecx( task, y, ystride, z, zstride )
  1861. USE MKL_VSL_TYPE
  1862. TYPE(VSL_CONV_TASK) :: task
  1863. INTEGER,DIMENSION(*) :: ystride,zstride
  1864. REAL(KIND=8),DIMENSION(*):: y,z
  1865. END FUNCTION
  1866. END INTERFACE
  1867. INTERFACE
  1868. INTEGER FUNCTION vslsconvexecx( task, y, ystride, z, zstride )
  1869. USE MKL_VSL_TYPE
  1870. TYPE(VSL_CONV_TASK) :: task
  1871. INTEGER,DIMENSION(*) :: ystride,zstride
  1872. REAL(KIND=4),DIMENSION(*):: y,z
  1873. END FUNCTION
  1874. END INTERFACE
  1875. INTERFACE
  1876. INTEGER FUNCTION vslzconvexecx( task, y, ystride, z, zstride )
  1877. USE MKL_VSL_TYPE
  1878. TYPE(VSL_CONV_TASK) :: task
  1879. INTEGER,DIMENSION(*) :: ystride,zstride
  1880. COMPLEX(KIND=8),DIMENSION(*):: y,z
  1881. END FUNCTION
  1882. END INTERFACE
  1883. INTERFACE
  1884. INTEGER FUNCTION vslcconvexecx( task, y, ystride, z, zstride )
  1885. USE MKL_VSL_TYPE
  1886. TYPE(VSL_CONV_TASK) :: task
  1887. INTEGER,DIMENSION(*) :: ystride,zstride
  1888. COMPLEX(KIND=4),DIMENSION(*):: y,z
  1889. END FUNCTION
  1890. END INTERFACE
  1891. INTERFACE
  1892. INTEGER FUNCTION vsldcorrexecx( task, y, ystride, z, zstride )
  1893. USE MKL_VSL_TYPE
  1894. TYPE(VSL_CORR_TASK) :: task
  1895. INTEGER,DIMENSION(*) :: ystride,zstride
  1896. REAL(KIND=8),DIMENSION(*):: y,z
  1897. END FUNCTION
  1898. END INTERFACE
  1899. INTERFACE
  1900. INTEGER FUNCTION vslscorrexecx( task, y, ystride, z, zstride )
  1901. USE MKL_VSL_TYPE
  1902. TYPE(VSL_CORR_TASK) :: task
  1903. INTEGER,DIMENSION(*) :: ystride,zstride
  1904. REAL(KIND=4),DIMENSION(*):: y,z
  1905. END FUNCTION
  1906. END INTERFACE
  1907. INTERFACE
  1908. INTEGER FUNCTION vslzcorrexecx( task, y, ystride, z, zstride )
  1909. USE MKL_VSL_TYPE
  1910. TYPE(VSL_CORR_TASK) :: task
  1911. INTEGER,DIMENSION(*) :: ystride,zstride
  1912. COMPLEX(KIND=8),DIMENSION(*):: y,z
  1913. END FUNCTION
  1914. END INTERFACE
  1915. INTERFACE
  1916. INTEGER FUNCTION vslccorrexecx( task, y, ystride, z, zstride )
  1917. USE MKL_VSL_TYPE
  1918. TYPE(VSL_CORR_TASK) :: task
  1919. INTEGER,DIMENSION(*) :: ystride,zstride
  1920. COMPLEX(KIND=4),DIMENSION(*):: y,z
  1921. END FUNCTION
  1922. END INTERFACE
  1923. INTERFACE
  1924. INTEGER FUNCTION vsldconvexecx1d( task, y, ystride, z, zstride)
  1925. USE MKL_VSL_TYPE
  1926. TYPE(VSL_CONV_TASK) :: task
  1927. INTEGER :: ystride,zstride
  1928. REAL(KIND=8),DIMENSION(*):: y,z
  1929. END FUNCTION
  1930. END INTERFACE
  1931. INTERFACE
  1932. INTEGER FUNCTION vslsconvexecx1d( task, y, ystride, z, zstride)
  1933. USE MKL_VSL_TYPE
  1934. TYPE(VSL_CONV_TASK) :: task
  1935. INTEGER :: ystride,zstride
  1936. REAL(KIND=4),DIMENSION(*):: y,z
  1937. END FUNCTION
  1938. END INTERFACE
  1939. INTERFACE
  1940. INTEGER FUNCTION vslzconvexecx1d( task, y, ystride, z, zstride)
  1941. USE MKL_VSL_TYPE
  1942. TYPE(VSL_CONV_TASK) :: task
  1943. INTEGER :: ystride,zstride
  1944. COMPLEX(KIND=8),DIMENSION(*):: y,z
  1945. END FUNCTION
  1946. END INTERFACE
  1947. INTERFACE
  1948. INTEGER FUNCTION vslcconvexecx1d( task, y, ystride, z, zstride)
  1949. USE MKL_VSL_TYPE
  1950. TYPE(VSL_CONV_TASK) :: task
  1951. INTEGER :: ystride,zstride
  1952. COMPLEX(KIND=4),DIMENSION(*):: y,z
  1953. END FUNCTION
  1954. END INTERFACE
  1955. INTERFACE
  1956. INTEGER FUNCTION vsldcorrexecx1d( task, y, ystride, z, zstride)
  1957. USE MKL_VSL_TYPE
  1958. TYPE(VSL_CORR_TASK) :: task
  1959. INTEGER :: ystride,zstride
  1960. REAL(KIND=8),DIMENSION(*):: y,z
  1961. END FUNCTION
  1962. END INTERFACE
  1963. INTERFACE
  1964. INTEGER FUNCTION vslscorrexecx1d( task, y, ystride, z, zstride)
  1965. USE MKL_VSL_TYPE
  1966. TYPE(VSL_CORR_TASK) :: task
  1967. INTEGER :: ystride,zstride
  1968. REAL(KIND=4),DIMENSION(*):: y,z
  1969. END FUNCTION
  1970. END INTERFACE
  1971. INTERFACE
  1972. INTEGER FUNCTION vslzcorrexecx1d( task, y, ystride, z, zstride)
  1973. USE MKL_VSL_TYPE
  1974. TYPE(VSL_CORR_TASK) :: task
  1975. INTEGER :: ystride,zstride
  1976. COMPLEX(KIND=8),DIMENSION(*):: y,z
  1977. END FUNCTION
  1978. END INTERFACE
  1979. INTERFACE
  1980. INTEGER FUNCTION vslccorrexecx1d( task, y, ystride, z, zstride)
  1981. USE MKL_VSL_TYPE
  1982. TYPE(VSL_CORR_TASK) :: task
  1983. INTEGER :: ystride,zstride
  1984. COMPLEX(KIND=4),DIMENSION(*):: y,z
  1985. END FUNCTION
  1986. END INTERFACE
  1987. !++
  1988. ! VSL CONTINUOUS DISTRIBUTION GENERATOR FUNCTION INTERFACES.
  1989. !--
  1990. ! Uniform distribution
  1991. INTERFACE
  1992. INTEGER FUNCTION vsrnguniform( method, stream, n, r, a, b )
  1993. USE MKL_VSL_TYPE
  1994. INTEGER,INTENT(IN) :: method
  1995. TYPE(VSL_STREAM_STATE) :: stream
  1996. INTEGER,INTENT(IN) :: n
  1997. REAL(KIND=4),INTENT(OUT) :: r(n)
  1998. REAL(KIND=4),INTENT(IN) :: a
  1999. REAL(KIND=4),INTENT(IN) :: b
  2000. END FUNCTION
  2001. END INTERFACE
  2002. INTERFACE
  2003. INTEGER FUNCTION vdrnguniform( method, stream, n, r, a, b )
  2004. USE MKL_VSL_TYPE
  2005. INTEGER,INTENT(IN) :: method
  2006. TYPE(VSL_STREAM_STATE) :: stream
  2007. INTEGER,INTENT(IN) :: n
  2008. REAL(KIND=8),INTENT(OUT) :: r(n)
  2009. REAL(KIND=8),INTENT(IN) :: a
  2010. REAL(KIND=8),INTENT(IN) :: b
  2011. END FUNCTION
  2012. END INTERFACE
  2013. ! Gaussian distribution
  2014. INTERFACE
  2015. INTEGER FUNCTION vsrnggaussian( method, stream, n, r, a, sigma)
  2016. USE MKL_VSL_TYPE
  2017. INTEGER,INTENT(IN) :: method
  2018. TYPE(VSL_STREAM_STATE) :: stream
  2019. INTEGER,INTENT(IN) :: n
  2020. REAL(KIND=4),INTENT(OUT) :: r(n)
  2021. REAL(KIND=4),INTENT(IN) :: a
  2022. REAL(KIND=4),INTENT(IN) :: sigma
  2023. END FUNCTION
  2024. END INTERFACE
  2025. INTERFACE
  2026. INTEGER FUNCTION vdrnggaussian( method, stream, n, r, a, sigma)
  2027. USE MKL_VSL_TYPE
  2028. INTEGER,INTENT(IN) :: method
  2029. TYPE(VSL_STREAM_STATE) :: stream
  2030. INTEGER,INTENT(IN) :: n
  2031. REAL(KIND=8),INTENT(OUT) :: r(n)
  2032. REAL(KIND=8),INTENT(IN) :: a
  2033. REAL(KIND=8),INTENT(IN) :: sigma
  2034. END FUNCTION
  2035. END INTERFACE
  2036. ! GaussianMV distribution
  2037. INTERFACE
  2038. INTEGER FUNCTION vsrnggaussianmv( method, stream, n, r, dimen, &
  2039. & mstorage, a, t )
  2040. USE MKL_VSL_TYPE
  2041. INTEGER,INTENT(IN) :: method
  2042. TYPE(VSL_STREAM_STATE) :: stream
  2043. INTEGER,INTENT(IN) :: n
  2044. INTEGER,INTENT(IN) :: dimen
  2045. REAL(KIND=4),INTENT(OUT) :: r(dimen,n)
  2046. INTEGER,INTENT(IN) :: mstorage
  2047. REAL(KIND=4),INTENT(IN) :: a(dimen)
  2048. REAL(KIND=4),INTENT(IN) :: t(dimen,dimen)
  2049. END FUNCTION
  2050. END INTERFACE
  2051. INTERFACE
  2052. INTEGER FUNCTION vdrnggaussianmv( method, stream, n, r, dimen, &
  2053. & mstorage, a, t )
  2054. USE MKL_VSL_TYPE
  2055. INTEGER,INTENT(IN) :: method
  2056. TYPE(VSL_STREAM_STATE) :: stream
  2057. INTEGER,INTENT(IN) :: n
  2058. REAL(KIND=8),INTENT(OUT) :: r(n)
  2059. INTEGER,INTENT(IN) :: dimen
  2060. INTEGER,INTENT(IN) :: mstorage
  2061. REAL(KIND=8),INTENT(IN) :: a(dimen)
  2062. REAL(KIND=8),INTENT(IN) :: t(dimen,dimen)
  2063. END FUNCTION
  2064. END INTERFACE
  2065. ! Exponential distribution
  2066. INTERFACE
  2067. INTEGER FUNCTION vsrngexponential( method, stream, n, r, a, &
  2068. & beta )
  2069. USE MKL_VSL_TYPE
  2070. INTEGER,INTENT(IN) :: method
  2071. TYPE(VSL_STREAM_STATE) :: stream
  2072. INTEGER,INTENT(IN) :: n
  2073. REAL(KIND=4),INTENT(OUT) :: r(n)
  2074. REAL(KIND=4),INTENT(IN) :: a
  2075. REAL(KIND=4),INTENT(IN) :: beta
  2076. END FUNCTION
  2077. END INTERFACE
  2078. INTERFACE
  2079. INTEGER FUNCTION vdrngexponential( method, stream, n, r, a, &
  2080. & beta )
  2081. USE MKL_VSL_TYPE
  2082. INTEGER,INTENT(IN) :: method
  2083. TYPE(VSL_STREAM_STATE) :: stream
  2084. INTEGER,INTENT(IN) :: n
  2085. REAL(KIND=8),INTENT(OUT) :: r(n)
  2086. REAL(KIND=8),INTENT(IN) :: a
  2087. REAL(KIND=8),INTENT(IN) :: beta
  2088. END FUNCTION
  2089. END INTERFACE
  2090. ! Laplace distribution
  2091. INTERFACE
  2092. INTEGER FUNCTION vsrnglaplace( method, stream, n, r, a, beta )
  2093. USE MKL_VSL_TYPE
  2094. INTEGER,INTENT(IN) :: method
  2095. TYPE(VSL_STREAM_STATE) :: stream
  2096. INTEGER,INTENT(IN) :: n
  2097. REAL(KIND=4),INTENT(OUT) :: r(n)
  2098. REAL(KIND=4),INTENT(IN) :: a
  2099. REAL(KIND=4),INTENT(IN) :: beta
  2100. END FUNCTION
  2101. END INTERFACE
  2102. INTERFACE
  2103. INTEGER FUNCTION vdrnglaplace( method, stream, n, r, a, beta )
  2104. USE MKL_VSL_TYPE
  2105. INTEGER,INTENT(IN) :: method
  2106. TYPE(VSL_STREAM_STATE) :: stream
  2107. INTEGER,INTENT(IN) :: n
  2108. REAL(KIND=8),INTENT(OUT) :: r(n)
  2109. REAL(KIND=8),INTENT(IN) :: a
  2110. REAL(KIND=8),INTENT(IN) :: beta
  2111. END FUNCTION
  2112. END INTERFACE
  2113. ! Weibull distribution
  2114. INTERFACE
  2115. INTEGER FUNCTION vsrngweibull( method, stream, n, r, alpha, a, &
  2116. & beta )
  2117. USE MKL_VSL_TYPE
  2118. INTEGER,INTENT(IN) :: method
  2119. TYPE(VSL_STREAM_STATE) :: stream
  2120. INTEGER,INTENT(IN) :: n
  2121. REAL(KIND=4),INTENT(OUT) :: r(n)
  2122. REAL(KIND=4),INTENT(IN) :: alpha
  2123. REAL(KIND=4),INTENT(IN) :: a
  2124. REAL(KIND=4),INTENT(IN) :: beta
  2125. END FUNCTION
  2126. END INTERFACE
  2127. INTERFACE
  2128. INTEGER FUNCTION vdrngweibull( method, stream, n, r, alpha, a, &
  2129. & beta )
  2130. USE MKL_VSL_TYPE
  2131. INTEGER,INTENT(IN) :: method
  2132. TYPE(VSL_STREAM_STATE) :: stream
  2133. INTEGER,INTENT(IN) :: n
  2134. REAL(KIND=8),INTENT(OUT) :: r(n)
  2135. REAL(KIND=8),INTENT(IN) :: alpha
  2136. REAL(KIND=8),INTENT(IN) :: a
  2137. REAL(KIND=8),INTENT(IN) :: beta
  2138. END FUNCTION
  2139. END INTERFACE
  2140. ! Cauchy distribution
  2141. INTERFACE
  2142. INTEGER FUNCTION vsrngcauchy( method, stream, n, r, a, beta )
  2143. USE MKL_VSL_TYPE
  2144. INTEGER,INTENT(IN) :: method
  2145. TYPE(VSL_STREAM_STATE) :: stream
  2146. INTEGER,INTENT(IN) :: n
  2147. REAL(KIND=4),INTENT(OUT) :: r(n)
  2148. REAL(KIND=4),INTENT(IN) :: a
  2149. REAL(KIND=4),INTENT(IN) :: beta
  2150. END FUNCTION
  2151. END INTERFACE
  2152. INTERFACE
  2153. INTEGER FUNCTION vdrngcauchy( method, stream, n, r, a, beta )
  2154. USE MKL_VSL_TYPE
  2155. INTEGER,INTENT(IN) :: method
  2156. TYPE(VSL_STREAM_STATE) :: stream
  2157. INTEGER,INTENT(IN) :: n
  2158. REAL(KIND=8),INTENT(OUT) :: r(n)
  2159. REAL(KIND=8),INTENT(IN) :: a
  2160. REAL(KIND=8),INTENT(IN) :: beta
  2161. END FUNCTION
  2162. END INTERFACE
  2163. ! Rayleigh distribution
  2164. INTERFACE
  2165. INTEGER FUNCTION vsrngrayleigh( method, stream, n, r, a, beta )
  2166. USE MKL_VSL_TYPE
  2167. INTEGER,INTENT(IN) :: method
  2168. TYPE(VSL_STREAM_STATE) :: stream
  2169. INTEGER,INTENT(IN) :: n
  2170. REAL(KIND=4),INTENT(OUT) :: r(n)
  2171. REAL(KIND=4),INTENT(IN) :: a
  2172. REAL(KIND=4),INTENT(IN) :: beta
  2173. END FUNCTION
  2174. END INTERFACE
  2175. INTERFACE
  2176. INTEGER FUNCTION vdrngrayleigh( method, stream, n, r, a, beta )
  2177. USE MKL_VSL_TYPE
  2178. INTEGER,INTENT(IN) :: method
  2179. TYPE(VSL_STREAM_STATE) :: stream
  2180. INTEGER,INTENT(IN) :: n
  2181. REAL(KIND=8),INTENT(OUT) :: r(n)
  2182. REAL(KIND=8),INTENT(IN) :: a
  2183. REAL(KIND=8),INTENT(IN) :: beta
  2184. END FUNCTION
  2185. END INTERFACE
  2186. ! Lognormal distribution
  2187. INTERFACE
  2188. INTEGER FUNCTION vsrnglognormal( method, stream, n, r, a,sigma, &
  2189. & b, beta )
  2190. USE MKL_VSL_TYPE
  2191. INTEGER,INTENT(IN) :: method
  2192. TYPE(VSL_STREAM_STATE) :: stream
  2193. INTEGER,INTENT(IN) :: n
  2194. REAL(KIND=4),INTENT(OUT) :: r(n)
  2195. REAL(KIND=4),INTENT(IN) :: a
  2196. REAL(KIND=4),INTENT(IN) :: sigma
  2197. REAL(KIND=4),INTENT(IN) :: b
  2198. REAL(KIND=4),INTENT(IN) :: beta
  2199. END FUNCTION
  2200. END INTERFACE
  2201. INTERFACE
  2202. INTEGER FUNCTION vdrnglognormal( method, stream, n, r, a,sigma, &
  2203. & b, beta )
  2204. USE MKL_VSL_TYPE
  2205. INTEGER,INTENT(IN) :: method
  2206. TYPE(VSL_STREAM_STATE) :: stream
  2207. INTEGER,INTENT(IN) :: n
  2208. REAL(KIND=8),INTENT(OUT) :: r(n)
  2209. REAL(KIND=8),INTENT(IN) :: a
  2210. REAL(KIND=8),INTENT(IN) :: sigma
  2211. REAL(KIND=8),INTENT(IN) :: b
  2212. REAL(KIND=8),INTENT(IN) :: beta
  2213. END FUNCTION
  2214. END INTERFACE
  2215. ! Gumbel distribution
  2216. INTERFACE
  2217. INTEGER FUNCTION vsrnggumbel( method, stream, n, r, a, beta )
  2218. USE MKL_VSL_TYPE
  2219. INTEGER,INTENT(IN) :: method
  2220. TYPE(VSL_STREAM_STATE) :: stream
  2221. INTEGER,INTENT(IN) :: n
  2222. REAL(KIND=4),INTENT(OUT) :: r(n)
  2223. REAL(KIND=4),INTENT(IN) :: a
  2224. REAL(KIND=4),INTENT(IN) :: beta
  2225. END FUNCTION
  2226. END INTERFACE
  2227. INTERFACE
  2228. INTEGER FUNCTION vdrnggumbel( method, stream, n, r, a, beta )
  2229. USE MKL_VSL_TYPE
  2230. INTEGER,INTENT(IN) :: method
  2231. TYPE(VSL_STREAM_STATE) :: stream
  2232. INTEGER,INTENT(IN) :: n
  2233. REAL(KIND=8),INTENT(OUT) :: r(n)
  2234. REAL(KIND=8),INTENT(IN) :: a
  2235. REAL(KIND=8),INTENT(IN) :: beta
  2236. END FUNCTION
  2237. END INTERFACE
  2238. ! Gamma distribution
  2239. INTERFACE
  2240. INTEGER FUNCTION vsrnggamma( method, stream, n, r, alpha, a, &
  2241. & beta )
  2242. USE MKL_VSL_TYPE
  2243. INTEGER,INTENT(IN) :: method
  2244. TYPE(VSL_STREAM_STATE) :: stream
  2245. INTEGER,INTENT(IN) :: n
  2246. REAL(KIND=4),INTENT(OUT) :: r(n)
  2247. REAL(KIND=4),INTENT(IN) :: alpha
  2248. REAL(KIND=4),INTENT(IN) :: a
  2249. REAL(KIND=4),INTENT(IN) :: beta
  2250. END FUNCTION
  2251. END INTERFACE
  2252. INTERFACE
  2253. INTEGER FUNCTION vdrnggamma( method, stream, n, r, alpha, a, &
  2254. & beta )
  2255. USE MKL_VSL_TYPE
  2256. INTEGER,INTENT(IN) :: method
  2257. TYPE(VSL_STREAM_STATE) :: stream
  2258. INTEGER,INTENT(IN) :: n
  2259. REAL(KIND=8),INTENT(OUT) :: r(n)
  2260. REAL(KIND=8),INTENT(IN) :: alpha
  2261. REAL(KIND=8),INTENT(IN) :: a
  2262. REAL(KIND=8),INTENT(IN) :: beta
  2263. END FUNCTION
  2264. END INTERFACE
  2265. ! Beta distribution
  2266. INTERFACE
  2267. INTEGER FUNCTION vsrngbeta( method, stream, n, r, p, q, a, &
  2268. & beta )
  2269. USE MKL_VSL_TYPE
  2270. INTEGER,INTENT(IN) :: method
  2271. TYPE(VSL_STREAM_STATE) :: stream
  2272. INTEGER,INTENT(IN) :: n
  2273. REAL(KIND=4),INTENT(OUT) :: r(n)
  2274. REAL(KIND=4),INTENT(IN) :: p
  2275. REAL(KIND=4),INTENT(IN) :: q
  2276. REAL(KIND=4),INTENT(IN) :: a
  2277. REAL(KIND=4),INTENT(IN) :: beta
  2278. END FUNCTION
  2279. END INTERFACE
  2280. INTERFACE
  2281. INTEGER FUNCTION vdrngbeta( method, stream, n, r, p, q, a, &
  2282. & beta )
  2283. USE MKL_VSL_TYPE
  2284. INTEGER,INTENT(IN) :: method
  2285. TYPE(VSL_STREAM_STATE) :: stream
  2286. INTEGER,INTENT(IN) :: n
  2287. REAL(KIND=8),INTENT(OUT) :: r(n)
  2288. REAL(KIND=8),INTENT(IN) :: p
  2289. REAL(KIND=8),INTENT(IN) :: q
  2290. REAL(KIND=8),INTENT(IN) :: a
  2291. REAL(KIND=8),INTENT(IN) :: beta
  2292. END FUNCTION
  2293. END INTERFACE
  2294. ! ChiSquare distribution
  2295. INTERFACE
  2296. INTEGER FUNCTION vsrngchisquare( method, stream, n, r, v)
  2297. IMPORT VSL_STREAM_STATE
  2298. INTEGER,INTENT(IN) :: method
  2299. TYPE(VSL_STREAM_STATE) :: stream
  2300. INTEGER,INTENT(IN) :: n
  2301. REAL(KIND=4),INTENT(OUT) :: r(n)
  2302. INTEGER(KIND=4),INTENT(IN) :: v
  2303. END FUNCTION
  2304. END INTERFACE
  2305. INTERFACE
  2306. INTEGER FUNCTION vdrngchisquare( method, stream, n, r, v)
  2307. IMPORT VSL_STREAM_STATE
  2308. INTEGER,INTENT(IN) :: method
  2309. TYPE(VSL_STREAM_STATE) :: stream
  2310. INTEGER,INTENT(IN) :: n
  2311. REAL(KIND=8),INTENT(OUT) :: r(n)
  2312. INTEGER(KIND=4),INTENT(IN) :: v
  2313. END FUNCTION
  2314. END INTERFACE
  2315. !++
  2316. ! VSL DISCRETE DISTRIBUTION GENERATOR FUNCTION INTERFACES.
  2317. !--
  2318. ! Uniform distribution
  2319. INTERFACE
  2320. INTEGER FUNCTION virnguniform( method, stream, n, r, a, b )
  2321. USE MKL_VSL_TYPE
  2322. INTEGER,INTENT(IN) :: method
  2323. TYPE(VSL_STREAM_STATE) :: stream
  2324. INTEGER,INTENT(IN) :: n
  2325. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2326. INTEGER(KIND=4),INTENT(IN) :: a
  2327. INTEGER(KIND=4),INTENT(IN) :: b
  2328. END FUNCTION
  2329. END INTERFACE
  2330. ! UniformBits distribution
  2331. INTERFACE
  2332. INTEGER FUNCTION virnguniformbits( method, stream, n, r )
  2333. USE MKL_VSL_TYPE
  2334. INTEGER,INTENT(IN) :: method
  2335. TYPE(VSL_STREAM_STATE) :: stream
  2336. INTEGER,INTENT(IN) :: n
  2337. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2338. END FUNCTION
  2339. END INTERFACE
  2340. ! UniformBits32 distribution
  2341. INTERFACE
  2342. INTEGER FUNCTION virnguniformbits32( method, stream, n, r )
  2343. USE MKL_VSL_TYPE
  2344. INTEGER,INTENT(IN) :: method
  2345. TYPE(VSL_STREAM_STATE) :: stream
  2346. INTEGER,INTENT(IN) :: n
  2347. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2348. END FUNCTION
  2349. END INTERFACE
  2350. ! UniformBits64 distribution
  2351. INTERFACE
  2352. INTEGER FUNCTION virnguniformbits64( method, stream, n, r )
  2353. USE MKL_VSL_TYPE
  2354. INTEGER,INTENT(IN) :: method
  2355. TYPE(VSL_STREAM_STATE) :: stream
  2356. INTEGER,INTENT(IN) :: n
  2357. INTEGER(KIND=8),INTENT(OUT) :: r(n)
  2358. END FUNCTION
  2359. END INTERFACE
  2360. ! Bernoulli distribution
  2361. INTERFACE
  2362. INTEGER FUNCTION virngbernoulli( method, stream, n, r, p )
  2363. USE MKL_VSL_TYPE
  2364. INTEGER,INTENT(IN) :: method
  2365. TYPE(VSL_STREAM_STATE) :: stream
  2366. INTEGER,INTENT(IN) :: n
  2367. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2368. REAL(KIND=8),INTENT(IN) :: p
  2369. END FUNCTION
  2370. END INTERFACE
  2371. ! Geometric distribution
  2372. INTERFACE
  2373. INTEGER FUNCTION virnggeometric( method, stream, n, r, p )
  2374. USE MKL_VSL_TYPE
  2375. INTEGER,INTENT(IN) :: method
  2376. TYPE(VSL_STREAM_STATE) :: stream
  2377. INTEGER,INTENT(IN) :: n
  2378. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2379. REAL(KIND=8),INTENT(IN) :: p
  2380. END FUNCTION
  2381. END INTERFACE
  2382. ! Binomial distribution
  2383. INTERFACE
  2384. INTEGER FUNCTION virngbinomial(method, stream, n, r, ntrial, p)
  2385. USE MKL_VSL_TYPE
  2386. INTEGER,INTENT(IN) :: method
  2387. TYPE(VSL_STREAM_STATE) :: stream
  2388. INTEGER,INTENT(IN) :: n
  2389. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2390. INTEGER(KIND=4),INTENT(IN) :: ntrial
  2391. REAL(KIND=8),INTENT(IN) :: p
  2392. END FUNCTION
  2393. END INTERFACE
  2394. ! Multinomial distribution
  2395. INTERFACE
  2396. INTEGER FUNCTION virngmultinomial(method, stream, n, r, ntrial, &
  2397. & k, p)
  2398. USE MKL_VSL_TYPE
  2399. INTEGER,INTENT(IN) :: method
  2400. TYPE(VSL_STREAM_STATE) :: stream
  2401. INTEGER,INTENT(IN) :: n
  2402. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2403. INTEGER(KIND=4),INTENT(IN) :: ntrial
  2404. INTEGER(KIND=4),INTENT(IN) :: k
  2405. REAL(KIND=8),INTENT(IN) :: p(k)
  2406. END FUNCTION
  2407. END INTERFACE
  2408. ! Hypergeometric distribution
  2409. INTERFACE
  2410. INTEGER FUNCTION virnghypergeometric( method, stream, n, r, l, &
  2411. & s, m )
  2412. USE MKL_VSL_TYPE
  2413. INTEGER,INTENT(IN) :: method
  2414. TYPE(VSL_STREAM_STATE) :: stream
  2415. INTEGER,INTENT(IN) :: n
  2416. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2417. INTEGER(KIND=4),INTENT(IN) :: l
  2418. INTEGER(KIND=4),INTENT(IN) :: s
  2419. INTEGER(KIND=4),INTENT(IN) :: m
  2420. END FUNCTION
  2421. END INTERFACE
  2422. ! Poisson distribution
  2423. INTERFACE
  2424. INTEGER FUNCTION virngpoisson( method, stream, n, r, lambda )
  2425. USE MKL_VSL_TYPE
  2426. INTEGER,INTENT(IN) :: method
  2427. TYPE(VSL_STREAM_STATE) :: stream
  2428. INTEGER,INTENT(IN) :: n
  2429. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2430. REAL(KIND=8),INTENT(IN) :: lambda
  2431. END FUNCTION
  2432. END INTERFACE
  2433. ! PoissonV distribution
  2434. INTERFACE
  2435. INTEGER FUNCTION virngpoissonv( method, stream, n, r, lambda )
  2436. USE MKL_VSL_TYPE
  2437. INTEGER,INTENT(IN) :: method
  2438. TYPE(VSL_STREAM_STATE) :: stream
  2439. INTEGER,INTENT(IN) :: n
  2440. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2441. REAL(KIND=8),INTENT(IN) :: lambda(n)
  2442. END FUNCTION
  2443. END INTERFACE
  2444. ! Negbinomial distribution
  2445. INTERFACE
  2446. INTEGER FUNCTION virngnegbinomial( method, stream, n, r, a, p )
  2447. USE MKL_VSL_TYPE
  2448. INTEGER,INTENT(IN) :: method
  2449. TYPE(VSL_STREAM_STATE) :: stream
  2450. INTEGER,INTENT(IN) :: n
  2451. INTEGER(KIND=4),INTENT(OUT) :: r(n)
  2452. REAL(KIND=8),INTENT(IN) :: a
  2453. REAL(KIND=8),INTENT(IN) :: p
  2454. END FUNCTION
  2455. END INTERFACE
  2456. !++
  2457. ! VSL SERVICE FUNCTION INTERFACES.
  2458. !--
  2459. ! NewStream - stream creation/initialization
  2460. INTERFACE
  2461. INTEGER FUNCTION vslnewstream( stream, brng, seed )
  2462. USE MKL_VSL_TYPE
  2463. TYPE(VSL_STREAM_STATE) :: stream
  2464. INTEGER,INTENT(IN) :: brng
  2465. INTEGER,INTENT(IN) :: seed
  2466. END FUNCTION
  2467. END INTERFACE
  2468. ! NewStreamEx - advanced stream creation/initialization
  2469. INTERFACE
  2470. INTEGER FUNCTION vslnewstreamex( stream, brng, n, params )
  2471. USE MKL_VSL_TYPE
  2472. TYPE(VSL_STREAM_STATE) :: stream
  2473. INTEGER,INTENT(IN) :: brng
  2474. INTEGER,INTENT(IN) :: n
  2475. INTEGER(KIND=4),INTENT(IN) :: params(n)
  2476. END FUNCTION
  2477. END INTERFACE
  2478. ! INEWABSTRACTSTREAM
  2479. INTERFACE
  2480. INTEGER FUNCTION vslinewabstractstream( stream, n, ibuf, ifunc)
  2481. USE MKL_VSL_TYPE
  2482. TYPE(VSL_STREAM_STATE),INTENT(OUT) :: stream
  2483. INTEGER,INTENT(IN) :: n
  2484. INTEGER(KIND=4),INTENT(IN) :: ibuf(n)
  2485. INTEGER(KIND=4),EXTERNAL :: ifunc
  2486. END FUNCTION
  2487. END INTERFACE
  2488. ! DNEWABSTRACTSTREAM
  2489. INTERFACE
  2490. INTEGER FUNCTION vsldnewabstractstream( stream, n, dbuf, a, b, &
  2491. & dfunc )
  2492. USE MKL_VSL_TYPE
  2493. TYPE(VSL_STREAM_STATE),INTENT(OUT) :: stream
  2494. INTEGER,INTENT(IN) :: n
  2495. REAL(KIND=8) ,INTENT(IN) :: dbuf(n)
  2496. REAL(KIND=8) ,INTENT(IN) :: a
  2497. REAL(KIND=8) ,INTENT(IN) :: b
  2498. INTEGER(KIND=4),EXTERNAL :: dfunc
  2499. END FUNCTION
  2500. END INTERFACE
  2501. ! SNEWABSTRACTSTREAM
  2502. INTERFACE
  2503. INTEGER FUNCTION vslsnewabstractstream( stream, n, sbuf, a, b, &
  2504. & sfunc )
  2505. USE MKL_VSL_TYPE
  2506. TYPE(VSL_STREAM_STATE),INTENT(OUT) :: stream
  2507. INTEGER,INTENT(IN) :: n
  2508. REAL(KIND=4) ,INTENT(IN) :: sbuf(n)
  2509. REAL(KIND=4) ,INTENT(IN) :: a
  2510. REAL(KIND=4) ,INTENT(IN) :: b
  2511. INTEGER(KIND=4),EXTERNAL :: sfunc
  2512. END FUNCTION
  2513. END INTERFACE
  2514. ! DeleteStream - delete stream
  2515. INTERFACE
  2516. INTEGER FUNCTION vsldeletestream( stream )
  2517. USE MKL_VSL_TYPE
  2518. TYPE(VSL_STREAM_STATE) :: stream
  2519. END FUNCTION
  2520. END INTERFACE
  2521. ! CopyStream - copy all stream information
  2522. INTERFACE
  2523. INTEGER FUNCTION vslcopystream( newstream, srcstream )
  2524. USE MKL_VSL_TYPE
  2525. TYPE(VSL_STREAM_STATE) :: newstream
  2526. TYPE(VSL_STREAM_STATE) :: srcstream
  2527. END FUNCTION
  2528. END INTERFACE
  2529. ! CopyStreamState - copy stream state only
  2530. INTERFACE
  2531. INTEGER FUNCTION vslcopystreamstate( deststream, srcstream )
  2532. USE MKL_VSL_TYPE
  2533. TYPE(VSL_STREAM_STATE) :: deststream
  2534. TYPE(VSL_STREAM_STATE) :: srcstream
  2535. END FUNCTION
  2536. END INTERFACE
  2537. ! LeapfrogStream - leapfrog method
  2538. INTERFACE
  2539. INTEGER FUNCTION vslleapfrogstream( stream, k, nstreams )
  2540. USE MKL_VSL_TYPE
  2541. TYPE(VSL_STREAM_STATE) :: stream
  2542. INTEGER,INTENT(IN) :: k
  2543. INTEGER,INTENT(IN) :: nstreams
  2544. END FUNCTION
  2545. END INTERFACE
  2546. ! SkipAheadStream - skip-ahead method
  2547. INTERFACE
  2548. INTEGER FUNCTION vslskipaheadstream( stream, nskip )
  2549. USE MKL_VSL_TYPE
  2550. TYPE(VSL_STREAM_STATE) :: stream
  2551. INTEGER(KIND=8),INTENT(IN) :: nskip
  2552. END FUNCTION
  2553. END INTERFACE
  2554. ! SkipAheadStreamEx - skip-ahead extended method
  2555. INTERFACE
  2556. INTEGER FUNCTION vslskipaheadstreamex( stream, n, params )
  2557. USE MKL_VSL_TYPE
  2558. TYPE(VSL_STREAM_STATE) :: stream
  2559. INTEGER,INTENT(IN) :: n
  2560. INTEGER(KIND=8),INTENT(IN) :: params(n)
  2561. END FUNCTION
  2562. END INTERFACE
  2563. ! GetBrngProperties - get BRNG properties
  2564. INTERFACE
  2565. INTEGER FUNCTION vslgetbrngproperties( brng, properties )
  2566. USE MKL_VSL_TYPE
  2567. INTEGER(KIND=4),INTENT(IN) :: brng
  2568. TYPE(VSL_BRNG_PROPERTIES),INTENT(OUT) :: properties
  2569. END FUNCTION
  2570. END INTERFACE
  2571. ! GetNumRegBrngs - get number of registered BRNGs
  2572. INTERFACE
  2573. INTEGER FUNCTION vslgetnumregbrngs( )
  2574. END FUNCTION
  2575. END INTERFACE
  2576. ! GetStreamStateBrng - get BRNG associated with given stream
  2577. INTERFACE
  2578. INTEGER FUNCTION vslgetstreamstatebrng( stream )
  2579. USE MKL_VSL_TYPE
  2580. TYPE(VSL_STREAM_STATE) :: stream
  2581. END FUNCTION
  2582. END INTERFACE
  2583. ! RegisterBrng - register new BRNG
  2584. INTERFACE
  2585. INTEGER FUNCTION vslregisterbrng( properties )
  2586. USE MKL_VSL_TYPE
  2587. TYPE(VSL_BRNG_PROPERTIES) :: properties
  2588. END FUNCTION
  2589. END INTERFACE
  2590. ! SaveStreamF - save stream to file
  2591. INTERFACE
  2592. INTEGER FUNCTION vslsavestreamf( stream, fname )
  2593. USE MKL_VSL_TYPE
  2594. CHARACTER(*) :: fname
  2595. TYPE(VSL_STREAM_STATE) :: stream
  2596. END FUNCTION
  2597. END INTERFACE
  2598. ! LoadStreamF - save stream to file
  2599. INTERFACE
  2600. INTEGER FUNCTION vslloadstreamf( stream, fname )
  2601. USE MKL_VSL_TYPE
  2602. CHARACTER(*) :: fname
  2603. TYPE(VSL_STREAM_STATE) :: stream
  2604. END FUNCTION
  2605. END INTERFACE
  2606. ! SaveStreamM - save stream to memory
  2607. INTERFACE
  2608. INTEGER FUNCTION vslsavestreamm( stream, memptr )
  2609. USE MKL_VSL_TYPE
  2610. INTEGER(KIND=1),DIMENSION(*),INTENT(OUT)::memptr
  2611. TYPE(VSL_STREAM_STATE),INTENT(IN) :: stream
  2612. END FUNCTION
  2613. END INTERFACE
  2614. ! LoadStreamM - load stream from memory
  2615. INTERFACE
  2616. INTEGER FUNCTION vslloadstreamm( stream, memptr )
  2617. USE MKL_VSL_TYPE
  2618. INTEGER(KIND=1),DIMENSION(*),INTENT(IN)::memptr
  2619. TYPE(VSL_STREAM_STATE),INTENT(OUT) ::stream
  2620. END FUNCTION
  2621. END INTERFACE
  2622. ! GetStreamSize - get size of random stream
  2623. INTERFACE
  2624. INTEGER FUNCTION vslgetstreamsize( stream )
  2625. USE MKL_VSL_TYPE
  2626. TYPE(VSL_STREAM_STATE),INTENT(IN) :: stream
  2627. END FUNCTION
  2628. END INTERFACE
  2629. !++
  2630. ! SUMMARARY STATTISTICS LIBARY ROUTINES
  2631. !--
  2632. ! Task constructors
  2633. INTERFACE
  2634. INTEGER FUNCTION vsldssnewtask(task,p,n,x_storage,x,w,indices)
  2635. USE MKL_VSL_TYPE
  2636. TYPE(VSL_SS_TASK) :: task
  2637. INTEGER,INTENT(IN) :: p
  2638. INTEGER,INTENT(IN) :: n
  2639. INTEGER,INTENT(IN) :: x_storage
  2640. REAL(KIND=8),INTENT(IN) :: x(n,p)
  2641. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL:: w
  2642. INTEGER,DIMENSION(*),INTENT(IN),OPTIONAL:: indices
  2643. END FUNCTION
  2644. END INTERFACE
  2645. INTERFACE
  2646. INTEGER FUNCTION vslsssnewtask(task,p,n,x_storage,x,w,indices)
  2647. USE MKL_VSL_TYPE
  2648. TYPE(VSL_SS_TASK) :: task
  2649. INTEGER,INTENT(IN) :: p
  2650. INTEGER,INTENT(IN) :: n
  2651. INTEGER,INTENT(IN) :: x_storage
  2652. REAL(KIND=4),INTENT(IN) :: x(n,p)
  2653. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL:: w
  2654. INTEGER,DIMENSION(*),INTENT(IN),OPTIONAL:: indices
  2655. END FUNCTION
  2656. END INTERFACE
  2657. ! Task editors
  2658. ! Editor to modify a task parameter
  2659. INTERFACE
  2660. INTEGER FUNCTION vsldssedittask(task,parameter,par_addr)
  2661. USE MKL_VSL_TYPE
  2662. TYPE(VSL_SS_TASK) :: task
  2663. INTEGER,INTENT(IN) :: parameter
  2664. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: par_addr
  2665. END FUNCTION
  2666. END INTERFACE
  2667. INTERFACE
  2668. INTEGER FUNCTION vslsssedittask(task,parameter,par_addr)
  2669. USE MKL_VSL_TYPE
  2670. TYPE(VSL_SS_TASK) :: task
  2671. INTEGER,INTENT(IN) :: parameter
  2672. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: par_addr
  2673. END FUNCTION
  2674. END INTERFACE
  2675. INTERFACE
  2676. INTEGER FUNCTION vslissedittask(task,parameter,par_addr)
  2677. USE MKL_VSL_TYPE
  2678. TYPE(VSL_SS_TASK) :: task
  2679. INTEGER,INTENT(IN) :: parameter
  2680. INTEGER,INTENT(IN) :: par_addr
  2681. END FUNCTION
  2682. END INTERFACE
  2683. ! Task specific editors
  2684. ! Editors to modify moments related parameters
  2685. INTERFACE
  2686. INTEGER FUNCTION vsldsseditmoments(task, mean, r2m, r3m, r4m, &
  2687. & c2m, c3m, c4m)
  2688. USE MKL_VSL_TYPE
  2689. TYPE(VSL_SS_TASK) :: task
  2690. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: mean
  2691. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: r2m
  2692. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: r3m
  2693. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: r4m
  2694. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: c2m
  2695. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: c3m
  2696. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: c4m
  2697. END FUNCTION
  2698. END INTERFACE
  2699. INTERFACE
  2700. INTEGER FUNCTION vslssseditmoments(task, mean, r2m, r3m, r4m, &
  2701. & c2m, c3m, c4m)
  2702. USE MKL_VSL_TYPE
  2703. TYPE(VSL_SS_TASK) :: task
  2704. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: mean
  2705. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: r2m
  2706. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: r3m
  2707. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: r4m
  2708. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: c2m
  2709. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: c3m
  2710. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: c4m
  2711. END FUNCTION
  2712. END INTERFACE
  2713. ! Editors to modify sums related parameters
  2714. INTERFACE
  2715. INTEGER FUNCTION vsldsseditsums(task, sum, r2s, r3s, r4s, &
  2716. & c2s, c3s, c4s)
  2717. USE MKL_VSL_TYPE
  2718. TYPE(VSL_SS_TASK) :: task
  2719. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: sum
  2720. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: r2s
  2721. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: r3s
  2722. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: r4s
  2723. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: c2s
  2724. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: c3s
  2725. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: c4s
  2726. END FUNCTION
  2727. END INTERFACE
  2728. INTERFACE
  2729. INTEGER FUNCTION vslssseditsums(task, sum, r2s, r3s, r4s, &
  2730. & c2s, c3s, c4s)
  2731. USE MKL_VSL_TYPE
  2732. TYPE(VSL_SS_TASK) :: task
  2733. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: sum
  2734. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: r2s
  2735. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: r3s
  2736. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: r4s
  2737. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: c2s
  2738. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: c3s
  2739. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: c4s
  2740. END FUNCTION
  2741. END INTERFACE
  2742. ! Editors to modify variance-covariance/correlation matrix
  2743. ! related parameters
  2744. INTERFACE
  2745. INTEGER FUNCTION vsldsseditcovcor(task, mean,cov, cov_storage, &
  2746. & cor, cor_storage)
  2747. USE MKL_VSL_TYPE
  2748. TYPE(VSL_SS_TASK) :: task
  2749. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: mean
  2750. REAL(KIND=8),DIMENSION(*),INTENT(IN), OPTIONAL :: cov
  2751. INTEGER,INTENT(IN), OPTIONAL :: cov_storage
  2752. REAL(KIND=8),DIMENSION(*),INTENT(IN), OPTIONAL :: cor
  2753. INTEGER,INTENT(IN), OPTIONAL :: cor_storage
  2754. END FUNCTION
  2755. END INTERFACE
  2756. INTERFACE
  2757. INTEGER FUNCTION vslssseditcovcor(task, mean,cov, cov_storage, &
  2758. & cor, cor_storage)
  2759. USE MKL_VSL_TYPE
  2760. TYPE(VSL_SS_TASK) :: task
  2761. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: mean
  2762. REAL(KIND=4),DIMENSION(*),INTENT(IN), OPTIONAL :: cov
  2763. INTEGER,INTENT(IN), OPTIONAL :: cov_storage
  2764. REAL(KIND=4),DIMENSION(*),INTENT(IN), OPTIONAL :: cor
  2765. INTEGER,INTENT(IN), OPTIONAL :: cor_storage
  2766. END FUNCTION
  2767. END INTERFACE
  2768. ! Editors to modify cross-product matrix
  2769. ! related parameters
  2770. INTERFACE
  2771. INTEGER FUNCTION vsldsseditcp(task, mean, sum, &
  2772. & cp, cp_storage)
  2773. USE MKL_VSL_TYPE
  2774. TYPE(VSL_SS_TASK) :: task
  2775. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: mean
  2776. REAL(KIND=8),DIMENSION(*),INTENT(IN), OPTIONAL :: sum
  2777. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: cp
  2778. INTEGER,INTENT(IN) :: cp_storage
  2779. END FUNCTION
  2780. END INTERFACE
  2781. INTERFACE
  2782. INTEGER FUNCTION vslssseditcp(task, mean, sum, &
  2783. & cp, cp_storage)
  2784. USE MKL_VSL_TYPE
  2785. TYPE(VSL_SS_TASK) :: task
  2786. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: mean
  2787. REAL(KIND=4),DIMENSION(*),INTENT(IN), OPTIONAL :: sum
  2788. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: cp
  2789. INTEGER,INTENT(IN) :: cp_storage
  2790. END FUNCTION
  2791. END INTERFACE
  2792. ! Editors to modify partial variance-covariance matrix
  2793. ! related parameters
  2794. INTERFACE
  2795. INTEGER FUNCTION vsldsseditpartialcovcor(task, p_idx_array, &
  2796. & cov, cov_storage, cor, cor_storage, &
  2797. & p_cov, p_cov_storage, p_cor, p_cor_storage)
  2798. USE MKL_VSL_TYPE
  2799. TYPE(VSL_SS_TASK) :: task
  2800. INTEGER,DIMENSION(*),INTENT(IN) :: p_idx_array
  2801. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: cov
  2802. INTEGER,INTENT(IN),OPTIONAL :: cov_storage
  2803. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: cor
  2804. INTEGER,INTENT(IN),OPTIONAL :: cor_storage
  2805. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: p_cov
  2806. INTEGER,INTENT(IN),OPTIONAL :: p_cov_storage
  2807. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: p_cor
  2808. INTEGER,INTENT(IN),OPTIONAL :: p_cor_storage
  2809. END FUNCTION
  2810. END INTERFACE
  2811. INTERFACE
  2812. INTEGER FUNCTION vslssseditpartialcovcor(task, p_idx_array, &
  2813. & cov, cov_storage, cor, cor_storage, &
  2814. & p_cov, p_cov_storage, p_cor, p_cor_storage)
  2815. USE MKL_VSL_TYPE
  2816. TYPE(VSL_SS_TASK) :: task
  2817. INTEGER,DIMENSION(*),INTENT(IN) :: p_idx_array
  2818. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: cov
  2819. INTEGER,INTENT(IN),OPTIONAL :: cov_storage
  2820. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: cor
  2821. INTEGER,INTENT(IN),OPTIONAL :: cor_storage
  2822. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: p_cov
  2823. INTEGER,INTENT(IN),OPTIONAL :: p_cov_storage
  2824. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: p_cor
  2825. INTEGER,INTENT(IN),OPTIONAL :: p_cor_storage
  2826. END FUNCTION
  2827. END INTERFACE
  2828. ! Editors to modify quantiles related parameters
  2829. INTERFACE
  2830. INTEGER FUNCTION vsldsseditquantiles(task, quant_order_n, &
  2831. & quant_order,quants, &
  2832. & order_stats, order_stats_storage)
  2833. USE MKL_VSL_TYPE
  2834. TYPE(VSL_SS_TASK) :: task
  2835. INTEGER,INTENT(IN),OPTIONAL :: quant_order_n
  2836. REAL(KIND=8),INTENT(IN),dimension(*),OPTIONAL::quant_order
  2837. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL::quants
  2838. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: &
  2839. & order_stats
  2840. INTEGER,INTENT(IN),OPTIONAL :: order_stats_storage
  2841. END FUNCTION
  2842. END INTERFACE
  2843. INTERFACE
  2844. INTEGER FUNCTION vslssseditquantiles(task, quant_order_n, &
  2845. & quant_order,quants, &
  2846. & order_stats, order_stats_storage)
  2847. USE MKL_VSL_TYPE
  2848. TYPE(VSL_SS_TASK) :: task
  2849. INTEGER,INTENT(IN),OPTIONAL :: quant_order_n
  2850. REAL(KIND=4),INTENT(IN),dimension(*),OPTIONAL::quant_order
  2851. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL::quants
  2852. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: &
  2853. & order_stats
  2854. INTEGER,INTENT(IN),OPTIONAL :: order_stats_storage
  2855. END FUNCTION
  2856. END INTERFACE
  2857. ! Editors to modify stream data quantiles related parameters
  2858. INTERFACE
  2859. INTEGER FUNCTION vsldsseditstreamquantiles(task, &
  2860. & quant_order_n, quant_order, quants, nparams, params)
  2861. USE MKL_VSL_TYPE
  2862. TYPE(VSL_SS_TASK) :: task
  2863. INTEGER,INTENT(IN) :: quant_order_n
  2864. REAL(KIND=8),INTENT(IN),dimension(*) :: quant_order
  2865. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: quants
  2866. INTEGER,INTENT(IN) :: nparams
  2867. REAL(KIND=8),INTENT(IN), DIMENSION(*) :: params
  2868. END FUNCTION
  2869. END INTERFACE
  2870. INTERFACE
  2871. INTEGER FUNCTION vslssseditstreamquantiles(task, &
  2872. & quant_order_n, quant_order, quants, nparams, params)
  2873. USE MKL_VSL_TYPE
  2874. TYPE(VSL_SS_TASK) :: task
  2875. INTEGER,INTENT(IN) :: quant_order_n
  2876. REAL(KIND=4),INTENT(IN),dimension(*) :: quant_order
  2877. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: quants
  2878. INTEGER,INTENT(IN) :: nparams
  2879. REAL(KIND=4),INTENT(IN), DIMENSION(*) :: params
  2880. END FUNCTION
  2881. END INTERFACE
  2882. ! Editors to modify pooled/group variance-covariance matrix
  2883. ! related parameters
  2884. INTERFACE
  2885. INTEGER FUNCTION vsldsseditpooledcovariance(task, grp_indices, &
  2886. & pld_mean, pld_cov, grp_cov_indices, grp_means, grp_cov)
  2887. USE MKL_VSL_TYPE
  2888. TYPE(VSL_SS_TASK) :: task
  2889. INTEGER,DIMENSION(*),INTENT(IN) :: grp_indices
  2890. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: pld_mean
  2891. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: pld_cov
  2892. INTEGER,DIMENSION(*),INTENT(IN),OPTIONAL ::grp_cov_indices
  2893. REAL(KIND=8),DIMENSION(*),INTENT(IN),OPTIONAL :: grp_means
  2894. REAL(KIND=8),DIMENSION(*),INTENT(IN), OPTIONAL :: grp_cov
  2895. END FUNCTION
  2896. END INTERFACE
  2897. INTERFACE
  2898. INTEGER FUNCTION vslssseditpooledcovariance(task, grp_indices, &
  2899. & pld_mean, pld_cov, grp_cov_indices, grp_means, grp_cov)
  2900. USE MKL_VSL_TYPE
  2901. TYPE(VSL_SS_TASK) :: task
  2902. INTEGER,DIMENSION(*),INTENT(IN) :: grp_indices
  2903. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: pld_mean
  2904. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: pld_cov
  2905. INTEGER,DIMENSION(*),INTENT(IN),OPTIONAL ::grp_cov_indices
  2906. REAL(KIND=4),DIMENSION(*),INTENT(IN),OPTIONAL :: grp_means
  2907. REAL(KIND=4),DIMENSION(*),INTENT(IN), OPTIONAL :: grp_cov
  2908. END FUNCTION
  2909. END INTERFACE
  2910. ! Editors to modify robust variance-covariance matrix
  2911. ! related parameters
  2912. INTERFACE
  2913. INTEGER FUNCTION vsldsseditrobustcovariance(task,rcov_storage, &
  2914. & nparams, params,rmean, rcov)
  2915. USE MKL_VSL_TYPE
  2916. TYPE(VSL_SS_TASK) :: task
  2917. INTEGER,INTENT(IN) :: rcov_storage
  2918. INTEGER,INTENT(IN) :: nparams
  2919. REAL(KIND=8),INTENT(IN) :: params(nparams)
  2920. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: rmean
  2921. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: rcov
  2922. END FUNCTION
  2923. END INTERFACE
  2924. INTERFACE
  2925. INTEGER FUNCTION vslssseditrobustcovariance(task,rcov_storage, &
  2926. & nparams, params,rmean, rcov)
  2927. USE MKL_VSL_TYPE
  2928. TYPE(VSL_SS_TASK) :: task
  2929. INTEGER,INTENT(IN) :: rcov_storage
  2930. INTEGER,INTENT(IN) :: nparams
  2931. REAL(KIND=4),INTENT(IN) :: params(nparams)
  2932. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: rmean
  2933. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: rcov
  2934. END FUNCTION
  2935. END INTERFACE
  2936. ! Editors to modify outliers detection parameters
  2937. INTERFACE
  2938. INTEGER FUNCTION vsldsseditoutliersdetection(task, &
  2939. & nparams, params, w)
  2940. USE MKL_VSL_TYPE
  2941. TYPE(VSL_SS_TASK) :: task
  2942. INTEGER,INTENT(IN) :: nparams
  2943. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: params(nparams)
  2944. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: w
  2945. END FUNCTION
  2946. END INTERFACE
  2947. INTERFACE
  2948. INTEGER FUNCTION vslssseditoutliersdetection(task, &
  2949. & nparams, params, w)
  2950. USE MKL_VSL_TYPE
  2951. TYPE(VSL_SS_TASK) :: task
  2952. INTEGER,INTENT(IN) :: nparams
  2953. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: params(nparams)
  2954. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: w
  2955. END FUNCTION
  2956. END INTERFACE
  2957. ! Editors to modify missing values parameters
  2958. INTERFACE
  2959. INTEGER FUNCTION vsldsseditmissingvalues(task, nparams, params, &
  2960. & init_estimates_n, init_estimates, prior_n, prior, &
  2961. & simul_missing_vals_n,simul_missing_vals, &
  2962. & estimates_n, estimates)
  2963. USE MKL_VSL_TYPE
  2964. TYPE(VSL_SS_TASK) :: task
  2965. INTEGER,INTENT(IN) :: nparams
  2966. REAL(KIND=8),INTENT(IN) :: params(nparams)
  2967. INTEGER,INTENT(IN),OPTIONAL :: init_estimates_n
  2968. REAL(KIND=8),INTENT(IN), DIMENSION(*),OPTIONAL:: &
  2969. & init_estimates
  2970. INTEGER,INTENT(IN),OPTIONAL :: prior_n
  2971. REAL(KIND=8),INTENT(IN),DIMENSION(*),OPTIONAL :: prior
  2972. INTEGER,INTENT(IN),OPTIONAL :: simul_missing_vals_n
  2973. REAL(KIND=8),INTENT(IN),DIMENSION(*),OPTIONAL :: &
  2974. & simul_missing_vals
  2975. INTEGER,INTENT(IN),OPTIONAL :: estimates_n
  2976. REAL(KIND=8),INTENT(IN), DIMENSION(*), OPTIONAL :: &
  2977. & estimates
  2978. END FUNCTION
  2979. END INTERFACE
  2980. INTERFACE
  2981. INTEGER FUNCTION vslssseditmissingvalues(task, nparams, params, &
  2982. & init_estimates_n, init_estimates, prior_n, prior, &
  2983. & simul_missing_vals_n,simul_missing_vals, &
  2984. & estimates_n, estimates)
  2985. USE MKL_VSL_TYPE
  2986. TYPE(VSL_SS_TASK) :: task
  2987. INTEGER,INTENT(IN) :: nparams
  2988. REAL(KIND=4),INTENT(IN) :: params(nparams)
  2989. INTEGER,INTENT(IN),OPTIONAL :: init_estimates_n
  2990. REAL(KIND=4),INTENT(IN), DIMENSION(*),OPTIONAL:: &
  2991. & init_estimates
  2992. INTEGER,INTENT(IN),OPTIONAL :: prior_n
  2993. REAL(KIND=4),INTENT(IN),DIMENSION(*),OPTIONAL :: prior
  2994. INTEGER,INTENT(IN),OPTIONAL :: simul_missing_vals_n
  2995. REAL(KIND=4),INTENT(IN),DIMENSION(*),OPTIONAL :: &
  2996. & simul_missing_vals
  2997. INTEGER,INTENT(IN),OPTIONAL :: estimates_n
  2998. REAL(KIND=4),INTENT(IN), DIMENSION(*), OPTIONAL :: &
  2999. & estimates
  3000. END FUNCTION
  3001. END INTERFACE
  3002. ! Editors to modify matrix parameterization
  3003. ! related parameters
  3004. INTERFACE
  3005. INTEGER FUNCTION vsldsseditcorparameterization (task, &
  3006. & cor, cor_storage, pcor, pcor_storage)
  3007. USE MKL_VSL_TYPE
  3008. TYPE(VSL_SS_TASK) :: task
  3009. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: cor
  3010. INTEGER,INTENT(IN) :: cor_storage
  3011. REAL(KIND=8),DIMENSION(*),INTENT(IN) :: pcor
  3012. INTEGER,INTENT(IN) :: pcor_storage
  3013. END FUNCTION
  3014. END INTERFACE
  3015. INTERFACE
  3016. INTEGER FUNCTION vslssseditcorparameterization (task, &
  3017. & cor, cor_storage, pcor, pcor_storage)
  3018. USE MKL_VSL_TYPE
  3019. TYPE(VSL_SS_TASK) :: task
  3020. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: cor
  3021. INTEGER,INTENT(IN) :: cor_storage
  3022. REAL(KIND=4),DIMENSION(*),INTENT(IN) :: pcor
  3023. INTEGER,INTENT(IN) :: pcor_storage
  3024. END FUNCTION
  3025. END INTERFACE
  3026. ! Compute routines
  3027. INTERFACE
  3028. INTEGER FUNCTION vsldsscompute(task, estimates, method)
  3029. USE MKL_VSL_TYPE
  3030. TYPE(VSL_SS_TASK) :: task
  3031. INTEGER(KIND=8),INTENT(IN) :: estimates
  3032. INTEGER,INTENT(IN) :: method
  3033. END FUNCTION
  3034. END INTERFACE
  3035. INTERFACE
  3036. INTEGER FUNCTION vslssscompute(task, estimates, method)
  3037. USE MKL_VSL_TYPE
  3038. TYPE(VSL_SS_TASK) :: task
  3039. INTEGER(KIND=8),INTENT(IN) :: estimates
  3040. INTEGER,INTENT(IN) :: method
  3041. END FUNCTION
  3042. END INTERFACE
  3043. ! Task destructor
  3044. INTERFACE
  3045. INTEGER FUNCTION vslssdeletetask(task)
  3046. USE MKL_VSL_TYPE
  3047. TYPE(VSL_SS_TASK) :: task
  3048. END FUNCTION
  3049. END INTERFACE
  3050. END MODULE MKL_VSL