dynare/matlab/doc/LPTAU.html

628 lines
47 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>Description of LPTAU</title>
<meta name="keywords" content="LPTAU">
<meta name="description" content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
<meta name="robots" content="index, follow">
<link type="text/css" rel="stylesheet" href="../m2html.css">
</head>
<body>
<a name="_top"></a>
<div><a href="../index.html">Home</a> &gt; <a href="index.html">.</a> &gt; LPTAU.m</div>
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
<h1>LPTAU
</h1>
<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong></strong></div>
<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>function VECTOR = LPTAU(I, N) </strong></div>
<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre class="comment">
I.M. SOBOL', V.I. TURCHANINOV, Yu.L. LEVITAN, B.V. SHUKHMAN
KELDYSH INSTITUTE OF APPLIED MATHEMATICS
RUSSIAN ACADEMY OF SCIENCES
QUASIRANDOM SEQUENCE GENERATORS
-------------------------------
28.11.1991
NOTE TO THE USER BY the NEA Data Bank:
This quasi random number generator has been made available to
you on condition that its identity is preserved when used
in computer programs. If its use leads to scientific publication
of results you should cite it in the references, in addition
no commercial use should be made unless agreed upon with the
main author (Prof. I.M. Sobol')
ABSTRACT
........
POINTS BELONGING TO LP-TAU SEQUENCES UNIFORMLY DISTRIBUTED IN THE
N-DIMENSIONAL UNIT CUBE ARE OFTEN USED IN NUMERICAL MATHEMATICS:
- AS NODES FOR MULTIDIMENSIONAL INTEGRATION;
- AS SEARCHING POINTS IN GLOBAL OPTIMIZATION;
- AS TRIAL POINTS IN MULTI-CRITERIA DECISION MAKING;
- AS QUASIRANDOM POINTS FOR QUASI-MONTECARLO ALGORITHMS;
- ETC.
THIS SUBROUTINE CONTAINS THE ALGORITHM FOR FAST GENERATION OF
LP-TAU SEQUENCES THAT ARE SUITABLE FOR MULTI-PROCESSOR COMPUTATIONS.
THE DIMENSIONS N.LE.51, THE NUMBER OF POINTS N.LT.2**30.
THE PROGRAMMING LANGUAGE IS FORTRAN-77. THIS SUBROUTINE IS AVAILABLE
ALSO IN %-LANGUAGE.
THE REPORT DESCRIBING THE ALGORITHM CONTAINS THE DESCRIPTION OF THE
ALGORITHM AND CERTAIN IMPORTANT PROPERTIES OF LP-TAU SEQUENCES AND
THEIR GENERALIZATIONS ARE DISCUSSED.
REFERENCE:
I.M. SOBOL', V.I. TURCHANINOV, Yu.L. LEVITAN, B.V. SHUKHMAN
KELDYSH INSTITUTE OF APPLIED MATHEMATICS
RUSSIAN ACADEMY OF SCIENCES
QUASIRANDOM SEQUENCE GENERATORS
MOSCOW 1992, IPM ZAK. NO.30 (100 COPIES)
------------------------------------------------------------------------
INPUT PARAMETERS:
I - NUMBER OF THE POINT (I=(0,2**30-1)),
N - DIMENSION OF THE POINT (0&lt;N&lt;52);
OUTPUT PARAMETER:
VECTOR(N) - N-VECTOR CONTAINING THE CARTESIAN CO-ORDINATES OF
THE I-TH POINT.
TO CALL THE SUBROUTINE WRITE:
CALL LPTAU(I,N,VECTOR)
WHERE I, N: INTEGER CAPABLE OF STORING 2**30 (INTEGER*4 ON IBM
OR OTHER 32 BIT/WORD MACHINES)
VECTOR: DOUBLE PRECISION ARRAY WHOSE LENGTH &lt; 52.
INTEGER QP
QP = QUANTITY POWER
PARAMETER (MAXDIM=51, QP=30, MAXNUM=2**30-1)</pre></div>
<!-- crossreference -->
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
This function calls:
<ul style="list-style-image:url(../matlabicon.gif)">
</ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="lptauSEQ.html" class="code" title="function [lpmat] = lptauSEQ(Nsam,Nvar)">lptauSEQ</a> [lpmat] = lptauSEQ(Nsam,Nvar)</li></ul>
<!-- crossreference -->
<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function VECTOR = LPTAU(I, N)</a>
0002 <span class="comment">%</span>
0003 <span class="comment">% I.M. SOBOL', V.I. TURCHANINOV, Yu.L. LEVITAN, B.V. SHUKHMAN</span>
0004 <span class="comment">% KELDYSH INSTITUTE OF APPLIED MATHEMATICS</span>
0005 <span class="comment">% RUSSIAN ACADEMY OF SCIENCES</span>
0006 <span class="comment">%</span>
0007 <span class="comment">% QUASIRANDOM SEQUENCE GENERATORS</span>
0008 <span class="comment">% -------------------------------</span>
0009 <span class="comment">%</span>
0010 <span class="comment">% 28.11.1991</span>
0011 <span class="comment">%</span>
0012 <span class="comment">% NOTE TO THE USER BY the NEA Data Bank:</span>
0013 <span class="comment">% This quasi random number generator has been made available to</span>
0014 <span class="comment">% you on condition that its identity is preserved when used</span>
0015 <span class="comment">% in computer programs. If its use leads to scientific publication</span>
0016 <span class="comment">% of results you should cite it in the references, in addition</span>
0017 <span class="comment">% no commercial use should be made unless agreed upon with the</span>
0018 <span class="comment">% main author (Prof. I.M. Sobol')</span>
0019 <span class="comment">%</span>
0020 <span class="comment">% ABSTRACT</span>
0021 <span class="comment">% ........</span>
0022 <span class="comment">%</span>
0023 <span class="comment">% POINTS BELONGING TO LP-TAU SEQUENCES UNIFORMLY DISTRIBUTED IN THE</span>
0024 <span class="comment">% N-DIMENSIONAL UNIT CUBE ARE OFTEN USED IN NUMERICAL MATHEMATICS:</span>
0025 <span class="comment">%</span>
0026 <span class="comment">% - AS NODES FOR MULTIDIMENSIONAL INTEGRATION;</span>
0027 <span class="comment">% - AS SEARCHING POINTS IN GLOBAL OPTIMIZATION;</span>
0028 <span class="comment">% - AS TRIAL POINTS IN MULTI-CRITERIA DECISION MAKING;</span>
0029 <span class="comment">% - AS QUASIRANDOM POINTS FOR QUASI-MONTECARLO ALGORITHMS;</span>
0030 <span class="comment">% - ETC.</span>
0031 <span class="comment">%</span>
0032 <span class="comment">% THIS SUBROUTINE CONTAINS THE ALGORITHM FOR FAST GENERATION OF</span>
0033 <span class="comment">% LP-TAU SEQUENCES THAT ARE SUITABLE FOR MULTI-PROCESSOR COMPUTATIONS.</span>
0034 <span class="comment">% THE DIMENSIONS N.LE.51, THE NUMBER OF POINTS N.LT.2**30.</span>
0035 <span class="comment">% THE PROGRAMMING LANGUAGE IS FORTRAN-77. THIS SUBROUTINE IS AVAILABLE</span>
0036 <span class="comment">% ALSO IN %-LANGUAGE.</span>
0037 <span class="comment">% THE REPORT DESCRIBING THE ALGORITHM CONTAINS THE DESCRIPTION OF THE</span>
0038 <span class="comment">% ALGORITHM AND CERTAIN IMPORTANT PROPERTIES OF LP-TAU SEQUENCES AND</span>
0039 <span class="comment">% THEIR GENERALIZATIONS ARE DISCUSSED.</span>
0040 <span class="comment">%</span>
0041 <span class="comment">% REFERENCE:</span>
0042 <span class="comment">% I.M. SOBOL', V.I. TURCHANINOV, Yu.L. LEVITAN, B.V. SHUKHMAN</span>
0043 <span class="comment">% KELDYSH INSTITUTE OF APPLIED MATHEMATICS</span>
0044 <span class="comment">% RUSSIAN ACADEMY OF SCIENCES</span>
0045 <span class="comment">%</span>
0046 <span class="comment">% QUASIRANDOM SEQUENCE GENERATORS</span>
0047 <span class="comment">% MOSCOW 1992, IPM ZAK. NO.30 (100 COPIES)</span>
0048 <span class="comment">%</span>
0049 <span class="comment">% ------------------------------------------------------------------------</span>
0050 <span class="comment">%</span>
0051 <span class="comment">% INPUT PARAMETERS:</span>
0052 <span class="comment">%</span>
0053 <span class="comment">% I - NUMBER OF THE POINT (I=(0,2**30-1)),</span>
0054 <span class="comment">% N - DIMENSION OF THE POINT (0&lt;N&lt;52);</span>
0055 <span class="comment">%</span>
0056 <span class="comment">% OUTPUT PARAMETER:</span>
0057 <span class="comment">%</span>
0058 <span class="comment">% VECTOR(N) - N-VECTOR CONTAINING THE CARTESIAN CO-ORDINATES OF</span>
0059 <span class="comment">% THE I-TH POINT.</span>
0060 <span class="comment">%</span>
0061 <span class="comment">%</span>
0062 <span class="comment">% TO CALL THE SUBROUTINE WRITE:</span>
0063 <span class="comment">%</span>
0064 <span class="comment">% CALL LPTAU(I,N,VECTOR)</span>
0065 <span class="comment">% WHERE I, N: INTEGER CAPABLE OF STORING 2**30 (INTEGER*4 ON IBM</span>
0066 <span class="comment">% OR OTHER 32 BIT/WORD MACHINES)</span>
0067 <span class="comment">% VECTOR: DOUBLE PRECISION ARRAY WHOSE LENGTH &lt; 52.</span>
0068 <span class="comment">%</span>
0069 <span class="comment">% INTEGER QP</span>
0070 <span class="comment">% QP = QUANTITY POWER</span>
0071 <span class="comment">%</span>
0072 <span class="comment">% PARAMETER (MAXDIM=51, QP=30, MAXNUM=2**30-1)</span>
0073 MAXDIM=51; QP=30; MAXNUM=2^30-1;
0074 <span class="comment">%</span>
0075 <span class="comment">% THE DIMENSION OF THE POINT CANNOT EXCEED MAXDIM</span>
0076 <span class="comment">% THE TOTAL NUMBER OF GENERATED POINTS CANNOT EXCEED 2**QP</span>
0077 <span class="comment">% MAXNUM=2**30-1 // 1073741823</span>
0078 <span class="comment">%</span>
0079 <span class="comment">% DOUBLE PRECISION VECTOR(N)</span>
0080 <span class="comment">% INTEGER I,N</span>
0081 <span class="comment">%</span>
0082 <span class="comment">% INTEGER PRVNUM,PRVDIM</span>
0083 <span class="comment">% INTEGER DIRECT(MAXDIM,QP), MASKV(MAXDIM)</span>
0084 <span class="comment">% DOUBLE PRECISION SCALE</span>
0085 <span class="comment">%</span>
0086 <span class="comment">% Translated into MATLAB by M. Ratto</span>
0087 VECTOR=zeros(1,N);
0088 SCALE =9.31322574615478516E-10;
0089
0090 <span class="keyword">persistent</span> PRVNUM PRVDIM MASKV DIRECT
0091 <span class="keyword">if</span> isempty(PRVNUM), PRVNUM=-2; <span class="keyword">end</span>,
0092 <span class="keyword">if</span> isempty(PRVDIM), PRVDIM=0; <span class="keyword">end</span>,
0093
0094 <span class="keyword">if</span> isempty(DIRECT), <span class="keyword">...</span>
0095 DIRECT(1:MAXDIM,1)=[
0096 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0097 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0098 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0099 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0100 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0101 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0102 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0103 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0104 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0105 536870912, 536870912, 536870912, 536870912, 536870912, <span class="keyword">...</span>
0106 536870912]';
0107 DIRECT(1:MAXDIM,2)=[
0108 805306368, 268435456, 805306368, 268435456, 805306368, <span class="keyword">...</span>
0109 268435456, 805306368, 268435456, 268435456, 805306368, <span class="keyword">...</span>
0110 268435456, 805306368, 268435456, 805306368, 268435456, <span class="keyword">...</span>
0111 805306368, 805306368, 268435456, 805306368, 268435456, <span class="keyword">...</span>
0112 805306368, 268435456, 805306368, 268435456, 268435456, <span class="keyword">...</span>
0113 805306368, 268435456, 805306368, 268435456, 805306368, <span class="keyword">...</span>
0114 268435456, 805306368, 805306368, 268435456, 805306368, <span class="keyword">...</span>
0115 268435456, 805306368, 268435456, 805306368, 268435456, <span class="keyword">...</span>
0116 268435456, 805306368, 268435456, 805306368, 268435456, <span class="keyword">...</span>
0117 805306368, 268435456, 805306368, 805306368, 268435456, <span class="keyword">...</span>
0118 805306368]';
0119 DIRECT(1:MAXDIM,3)=[
0120 939524096, 939524096, 134217728, 671088640, 402653184, <span class="keyword">...</span>
0121 402653184, 671088640, 134217728, 671088640, 402653184, <span class="keyword">...</span>
0122 939524096, 134217728, 671088640, 939524096, 134217728, <span class="keyword">...</span>
0123 671088640, 134217728, 939524096, 939524096, 402653184, <span class="keyword">...</span>
0124 402653184, 134217728, 671088640, 402653184, 671088640, <span class="keyword">...</span>
0125 402653184, 402653184, 671088640, 134217728, 134217728, <span class="keyword">...</span>
0126 939524096, 939524096, 939524096, 939524096, 134217728, <span class="keyword">...</span>
0127 671088640, 402653184, 402653184, 671088640, 134217728, <span class="keyword">...</span>
0128 671088640, 402653184, 939524096, 134217728, 671088640, <span class="keyword">...</span>
0129 939524096, 134217728, 671088640, 134217728, 939524096, <span class="keyword">...</span>
0130 939524096]';
0131 DIRECT(1:MAXDIM,4)=[
0132 1006632960, 67108864, 603979776, 1006632960, 335544320, <span class="keyword">...</span>
0133 469762048, 872415232, 738197504, 469762048, 872415232, <span class="keyword">...</span>
0134 1006632960, 67108864, 872415232, 469762048, 469762048, <span class="keyword">...</span>
0135 469762048, 1006632960, 335544320, 872415232, 603979776, <span class="keyword">...</span>
0136 201326592, 67108864, 335544320, 67108864, 201326592, <span class="keyword">...</span>
0137 738197504, 1006632960, 738197504, 603979776, 335544320, <span class="keyword">...</span>
0138 738197504, 67108864, 1006632960, 67108864, 603979776, <span class="keyword">...</span>
0139 1006632960, 335544320, 469762048, 872415232, 738197504, <span class="keyword">...</span>
0140 469762048, 872415232, 1006632960, 67108864, 872415232, <span class="keyword">...</span>
0141 469762048, 469762048, 469762048, 1006632960, 335544320, <span class="keyword">...</span>
0142 872415232]';
0143 DIRECT(1:MAXDIM,5)=[
0144 1040187392, 637534208, 1040187392, 838860800, 167772160, <span class="keyword">...</span>
0145 234881024, 167772160, 1040187392, 436207616, 33554432, <span class="keyword">...</span>
0146 570425344, 1040187392, 503316480, 838860800, 973078528, <span class="keyword">...</span>
0147 167772160, 234881024, 436207616, 771751936, 100663296, <span class="keyword">...</span>
0148 234881024, 905969664, 771751936, 33554432, 838860800, <span class="keyword">...</span>
0149 973078528, 905969664, 33554432, 301989888, 838860800, <span class="keyword">...</span>
0150 100663296, 234881024, 1040187392, 637534208, 1040187392, <span class="keyword">...</span>
0151 838860800, 167772160, 234881024, 167772160, 1040187392, <span class="keyword">...</span>
0152 436207616, 33554432, 570425344, 1040187392, 503316480, <span class="keyword">...</span>
0153 838860800, 973078528, 167772160, 234881024, 436207616, <span class="keyword">...</span>
0154 771751936]';
0155 DIRECT(1:MAXDIM,6)=[
0156 1056964608, 352321536, 50331648, 419430400, 956301312, <span class="keyword">...</span>
0157 889192448, 620756992, 117440512, 956301312, 922746880, <span class="keyword">...</span>
0158 822083584, 218103808, 587202560, 385875968, 452984832, <span class="keyword">...</span>
0159 218103808, 184549376, 285212672, 150994944, 956301312, <span class="keyword">...</span>
0160 352321536, 654311424, 553648128, 352321536, 788529152, <span class="keyword">...</span>
0161 956301312, 587202560, 251658240, 218103808, 721420288, <span class="keyword">...</span>
0162 251658240, 1056964608, 520093696, 889192448, 587202560, <span class="keyword">...</span>
0163 956301312, 419430400, 352321536, 83886080, 654311424, <span class="keyword">...</span>
0164 419430400, 385875968, 285212672, 754974720, 50331648, <span class="keyword">...</span>
0165 922746880, 989855744, 754974720, 721420288, 822083584, <span class="keyword">...</span>
0166 687865856]';
0167 DIRECT(1:MAXDIM,7)=[
0168 1065353216, 1065353216, 578813952, 25165824, 125829120, <span class="keyword">...</span>
0169 964689920, 327155712, 310378496, 360710144, 360710144, <span class="keyword">...</span>
0170 159383552, 444596224, 947912704, 662700032, 444596224, <span class="keyword">...</span>
0171 528482304, 578813952, 578813952, 75497472, 1065353216, <span class="keyword">...</span>
0172 92274688, 511705088, 897581056, 847249408, 662700032, <span class="keyword">...</span>
0173 931135488, 411041792, 713031680, 696254464, 528482304, <span class="keyword">...</span>
0174 209715200, 578813952, 1065353216, 1065353216, 578813952, <span class="keyword">...</span>
0175 25165824, 125829120, 964689920, 327155712, 310378496, <span class="keyword">...</span>
0176 360710144, 360710144, 159383552, 444596224, 947912704, <span class="keyword">...</span>
0177 662700032, 444596224, 528482304, 578813952, 578813952, <span class="keyword">...</span>
0178 75497472]';
0179 DIRECT(1:MAXDIM,8)=[
0180 1069547520, 4194304, 826277888, 624951296, 616562688, <span class="keyword">...</span>
0181 801112064, 952107008, 406847488, 398458880, 331350016, <span class="keyword">...</span>
0182 356515840, 46137344, 1010827264, 1069547520, 734003200, <span class="keyword">...</span>
0183 113246208, 490733568, 633339904, 910163968, 801112064, <span class="keyword">...</span>
0184 893386752, 851443712, 801112064, 918552576, 742391808, <span class="keyword">...</span>
0185 499122176, 62914560, 264241152, 708837376, 717225984, <span class="keyword">...</span>
0186 759169024, 499122176, 272629760, 423624704, 155189248, <span class="keyword">...</span>
0187 239075328, 205520896, 943718400, 373293056, 457179136, <span class="keyword">...</span>
0188 406847488, 71303168, 473956352, 54525952, 624951296, <span class="keyword">...</span>
0189 104857600, 1019215872, 901775360, 213909504, 281018368, <span class="keyword">...</span>
0190 851443712]';
0191 DIRECT(1:MAXDIM,9)=[
0192 1071644672, 543162368, 190840832, 329252864, 853540864, <span class="keyword">...</span>
0193 132120576, 778043392, 73400320, 178257920, 522190848, <span class="keyword">...</span>
0194 639631360, 534773760, 991952896, 333447168, 48234496, <span class="keyword">...</span>
0195 1059061760, 761266176, 673185792, 220200960, 396361728, <span class="keyword">...</span>
0196 362807296, 815792128, 819986432, 346030080, 39845888, <span class="keyword">...</span>
0197 752877568, 387973120, 643825664, 291504128, 274726912, <span class="keyword">...</span>
0198 568328192, 526385152, 673185792, 98566144, 396361728, <span class="keyword">...</span>
0199 727711744, 1042284544, 106954752, 299892736, 912261120, <span class="keyword">...</span>
0200 44040192, 895483904, 333447168, 551550976, 467664896, <span class="keyword">...</span>
0201 618659840, 606076928, 274726912, 245366784, 446693376, <span class="keyword">...</span>
0202 421527552]';
0203 DIRECT(1:MAXDIM,10)=[
0204 1072693248, 273678336, 644874240, 753926144, 495976448, <span class="keyword">...</span>
0205 869269504, 355467264, 57671680, 816840704, 961544192, <span class="keyword">...</span>
0206 804257792, 495976448, 347078656, 426770432, 1066401792, <span class="keyword">...</span>
0207 372244480, 84934656, 208666624, 313524224, 598736896, <span class="keyword">...</span>
0208 487587840, 965738496, 1011875840, 296747008, 393216000, <span class="keyword">...</span>
0209 523239424, 720371712, 823132160, 128974848, 407896064, <span class="keyword">...</span>
0210 747634688, 850395136, 873463808, 504365056, 481296384, <span class="keyword">...</span>
0211 686817280, 592445440, 995098624, 498073600, 969932800, <span class="keyword">...</span>
0212 586153984, 1039138816, 814743552, 523239424, 294649856, <span class="keyword">...</span>
0213 305135616, 506462208, 11534336, 449839104, 619708416, <span class="keyword">...</span>
0214 479199232]';
0215 DIRECT(1:MAXDIM,11)=[
0216 1073217536, 947388416, 1070071808, 977797120, 365428736, <span class="keyword">...</span>
0217 702021632, 461897728, 829947904, 425197568, 634912768, <span class="keyword">...</span>
0218 437780480, 582483968, 792199168, 315097088, 611844096, <span class="keyword">...</span>
0219 667418624, 166199296, 513277952, 187170816, 1036517376, <span class="keyword">...</span>
0220 25690112, 201850880, 443023360, 990380032, 63438848, <span class="keyword">...</span>
0221 211288064, 983040000, 1069023232, 421003264, 742916096, <span class="keyword">...</span>
0222 487063552, 363331584, 973602816, 286785536, 171442176, <span class="keyword">...</span>
0223 669515776, 110624768, 383254528, 289931264, 352845824, <span class="keyword">...</span>
0224 878182400, 655884288, 836239360, 765984768, 549978112, <span class="keyword">...</span>
0225 655884288, 85458944, 591921152, 563609600, 277348352, <span class="keyword">...</span>
0226 919076864]';
0227 DIRECT(1:MAXDIM,12)=[
0228 1073479680, 71565312, 2359296, 891551744, 158597120, <span class="keyword">...</span>
0229 383516672, 1019478016, 947126272, 621019136, 714866688, <span class="keyword">...</span>
0230 738459648, 265027584, 468975616, 131858432, 504627200, <span class="keyword">...</span>
0231 581173248, 266600448, 865861632, 658243584, 546045952, <span class="keyword">...</span>
0232 521404416, 304873472, 1060896768, 163840000, 305922048, <span class="keyword">...</span>
0233 257163264, 50069504, 773062656, 59506688, 779354112, <span class="keyword">...</span>
0234 165937152, 587988992, 486801408, 160694272, 90439680, <span class="keyword">...</span>
0235 423362560, 536608768, 614203392, 56885248, 999030784, <span class="keyword">...</span>
0236 10747904, 764674048, 25952256, 989069312, 352583680, <span class="keyword">...</span>
0237 799801344, 261357568, 873201664, 40108032, 769392640, <span class="keyword">...</span>
0238 254541824]';
0239 DIRECT(1:MAXDIM,13)=[
0240 1073610752, 644218880, 538836992, 455475200, 1062600704, <span class="keyword">...</span>
0241 139329536, 205651968, 905052160, 797048832, 452329472, <span class="keyword">...</span>
0242 973471744, 627703808, 614072320, 803078144, 637403136, <span class="keyword">...</span>
0243 835059712, 949878784, 662044672, 767950848, 426901504, <span class="keyword">...</span>
0244 448659456, 23986176, 1016201216, 524943360, 525991936, <span class="keyword">...</span>
0245 618790912, 781058048, 761659392, 458096640, 226361344, <span class="keyword">...</span>
0246 950665216, 952500224, 516030464, 337510400, 496107520, <span class="keyword">...</span>
0247 830865408, 944111616, 636354560, 978452480, 921567232, <span class="keyword">...</span>
0248 533594112, 7471104, 678035456, 471203840, 1065746432, <span class="keyword">...</span>
0249 575275008, 996540416, 909246464, 879362048, 637927424, <span class="keyword">...</span>
0250 25821184]';
0251 DIRECT(1:MAXDIM,14)=[
0252 1073676288, 357892096, 808648704, 2424832, 2555904, <span class="keyword">...</span>
0253 624230400, 69271552, 456851456, 1052966912, 600637440, <span class="keyword">...</span>
0254 487260160, 794624000, 386727936, 467599360, 798031872, <span class="keyword">...</span>
0255 630652928, 340983808, 493944832, 37945344, 264175616, <span class="keyword">...</span>
0256 263520256, 833421312, 235077632, 464846848, 534839296, <span class="keyword">...</span>
0257 992411648, 10813440, 367067136, 116457472, 115015680, <span class="keyword">...</span>
0258 928710656, 619773952, 813760512, 1043398656, 967770112, <span class="keyword">...</span>
0259 912850944, 72155136, 1009057792, 668532736, 462356480, <span class="keyword">...</span>
0260 267321344, 795803648, 635764736, 574160896, 1003421696, <span class="keyword">...</span>
0261 181075968, 56688640, 388562944, 190906368, 657915904, <span class="keyword">...</span>
0262 474939392]';
0263 DIRECT(1:MAXDIM,15)=[
0264 1073709056, 1073709056, 137003008, 547782656, 545095680, <span class="keyword">...</span>
0265 26836992, 34701312, 354385920, 925663232, 656965632, <span class="keyword">...</span>
0266 327581696, 894795776, 110067712, 1038057472, 209354752, <span class="keyword">...</span>
0267 596541440, 42631168, 471433216, 52527104, 666861568, <span class="keyword">...</span>
0268 706707456, 674070528, 824410112, 305496064, 136282112, <span class="keyword">...</span>
0269 847740928, 531464192, 222920704, 379289600, 507740160, <span class="keyword">...</span>
0270 11894784, 1053392896, 129990656, 557547520, 666468352, <span class="keyword">...</span>
0271 1061912576, 576684032, 1041334272, 380469248, 114196480, <span class="keyword">...</span>
0272 133070848, 517046272, 129990656, 790396928, 563773440, <span class="keyword">...</span>
0273 388333568, 661749760, 446791680, 737378304, 229998592, <span class="keyword">...</span>
0274 348225536]';
0275 DIRECT(1:MAXDIM,16)=[
0276 1073725440, 16384, 605372416, 275234816, 817971200, <span class="keyword">...</span>
0277 603963392, 555335680, 721534976, 997801984, 1028767744, <span class="keyword">...</span>
0278 407060480, 375275520, 256688128, 1021165568, 303349760, <span class="keyword">...</span>
0279 1022476288, 234143744, 106708992, 732971008, 733954048, <span class="keyword">...</span>
0280 789889024, 879575040, 764657664, 762658816, 1010843648, <span class="keyword">...</span>
0281 941080576, 827932672, 98942976, 1051738112, 624934912, <span class="keyword">...</span>
0282 993280000, 134070272, 201375744, 567558144, 882163712, <span class="keyword">...</span>
0283 649084928, 356564992, 489439232, 637091840, 60637184, <span class="keyword">...</span>
0284 199278592, 815677440, 927678464, 94519296, 419184640, <span class="keyword">...</span>
0285 933838848, 426655744, 911130624, 171393024, 561332224, <span class="keyword">...</span>
0286 471613440]';
0287 DIRECT(1:MAXDIM,17)=[
0288 1073733632, 536895488, 1043685376, 679944192, 417505280, <span class="keyword">...</span>
0289 301981696, 832561152, 210542592, 167501824, 1071341568, <span class="keyword">...</span>
0290 229302272, 970661888, 732176384, 576659456, 402464768, <span class="keyword">...</span>
0291 451584000, 368467968, 928260096, 933847040, 29319168, <span class="keyword">...</span>
0292 582934528, 772612096, 330014720, 647323648, 174071808, <span class="keyword">...</span>
0293 1008689152, 295919616, 353869824, 177774592, 580198400, <span class="keyword">...</span>
0294 381837312, 638574592, 637558784, 679370752, 504012800, <span class="keyword">...</span>
0295 747118592, 429973504, 1032609792, 932667392, 583360512, <span class="keyword">...</span>
0296 969498624, 1056333824, 660955136, 247488512, 153509888, <span class="keyword">...</span>
0297 242180096, 205840384, 797499392, 824565760, 234348544, <span class="keyword">...</span>
0298 842326016]';
0299 DIRECT(1:MAXDIM,18)=[
0300 1073737728, 268455936, 52785152, 1020628992, 345018368, <span class="keyword">...</span>
0301 452972544, 704442368, 255987712, 750759936, 697692160, <span class="keyword">...</span>
0302 196677632, 764604416, 485625856, 522022912, 680620032, <span class="keyword">...</span>
0303 362270720, 838103040, 83972096, 629133312, 46108672, <span class="keyword">...</span>
0304 867561472, 725422080, 184504320, 751112192, 191918080, <span class="keyword">...</span>
0305 306425856, 507310080, 30453760, 281858048, 604000256, <span class="keyword">...</span>
0306 208662528, 319557632, 318779392, 476139520, 863719424, <span class="keyword">...</span>
0307 567062528, 521179136, 712790016, 610299904, 293687296, <span class="keyword">...</span>
0308 1023086592, 549089280, 1065242624, 707751936, 363024384, <span class="keyword">...</span>
0309 16674816, 197136384, 1037561856, 195112960, 372707328, <span class="keyword">...</span>
0310 992751616]';
0311 DIRECT(1:MAXDIM,19)=[
0312 1073739776, 939554816, 580732928, 854333440, 172619776, <span class="keyword">...</span>
0313 511694848, 936142848, 518199296, 593348608, 225527808, <span class="keyword">...</span>
0314 900982784, 180279296, 168904704, 62814208, 754485248, <span class="keyword">...</span>
0315 730691584, 1005996032, 411174912, 249866240, 641669120, <span class="keyword">...</span>
0316 1008719872, 749066240, 860993536, 94177280, 432564224, <span class="keyword">...</span>
0317 226355200, 925784064, 995657728, 967731200, 436226048, <span class="keyword">...</span>
0318 913799168, 549894144, 964696064, 843315200, 445863936, <span class="keyword">...</span>
0319 1047422976, 548947968, 492066816, 953870336, 1002653696, <span class="keyword">...</span>
0320 861440000, 385636352, 325253120, 187353088, 653584384, <span class="keyword">...</span>
0321 1008269312, 748693504, 1013016576, 55814144, 255170560, <span class="keyword">...</span>
0322 260708352]';
0323 DIRECT(1:MAXDIM,20)=[
0324 1073740800, 67126272, 829514752, 423777280, 968297472, <span class="keyword">...</span>
0325 205511680, 147076096, 926669824, 202300416, 118395904, <span class="keyword">...</span>
0326 381332480, 1002738688, 743042048, 292551680, 584567808, <span class="keyword">...</span>
0327 284339200, 183936000, 616762368, 435221504, 159376384, <span class="keyword">...</span>
0328 907322368, 595696640, 247497728, 553735168, 826051584, <span class="keyword">...</span>
0329 564454400, 446024704, 214236160, 33661952, 251685888, <span class="keyword">...</span>
0330 660327424, 284244992, 859868160, 722502656, 622844928, <span class="keyword">...</span>
0331 324342784, 682374144, 400579584, 405353472, 605187072, <span class="keyword">...</span>
0332 840682496, 212956160, 157891584, 193201152, 437990400, <span class="keyword">...</span>
0333 573578240, 368053248, 580197376, 937905152, 565527552, <span class="keyword">...</span>
0334 89064448]';
0335 DIRECT(1:MAXDIM,21)=[
0336 1073741312, 637560320, 189496832, 27474432, 129338880, <span class="keyword">...</span>
0337 908054016, 641870336, 186375680, 302677504, 763663872, <span class="keyword">...</span>
0338 103878144, 325187072, 858254848, 922041856, 261924352, <span class="keyword">...</span>
0339 954978816, 292822528, 849512960, 210311680, 933232128, <span class="keyword">...</span>
0340 691981824, 155417088, 627070464, 416795136, 182081024, <span class="keyword">...</span>
0341 513433088, 848658944, 515770880, 627273216, 629169664, <span class="keyword">...</span>
0342 414566912, 147450368, 698353152, 244844032, 226578944, <span class="keyword">...</span>
0343 1020087808, 886978048, 389697024, 1007004160, 839646720, <span class="keyword">...</span>
0344 621924864, 549962240, 609583616, 735976960, 87342592, <span class="keyword">...</span>
0345 1058542080, 163066368, 307997184, 876471808, 794280448, <span class="keyword">...</span>
0346 675386880]';
0347 DIRECT(1:MAXDIM,22)=[
0348 1073741568, 352343296, 644236032, 636735232, 615860480, <span class="keyword">...</span>
0349 959444224, 287380736, 1007410432, 890187008, 399480576, <span class="keyword">...</span>
0350 520092928, 643311360, 816901376, 695310080, 1019229440, <span class="keyword">...</span>
0351 77034240, 733295872, 1035127552, 986582784, 332381952, <span class="keyword">...</span>
0352 334852352, 364956416, 596672256, 800381696, 480316672, <span class="keyword">...</span>
0353 574863104, 647347968, 702910208, 499965184, 364968704, <span class="keyword">...</span>
0354 120862976, 1023256320, 995114240, 13951232, 32520448, <span class="keyword">...</span>
0355 702127360, 45176064, 444945664, 237860096, 152839936, <span class="keyword">...</span>
0356 530633984, 429135616, 267272448, 884808960, 933712640, <span class="keyword">...</span>
0357 61605632, 174335744, 564911360, 302327552, 650589440, <span class="keyword">...</span>
0358 450649344]';
0359 DIRECT(1:MAXDIM,23)=[
0360 1073741696, 1065385856, 1073734272, 331949184, 842310784, <span class="keyword">...</span>
0361 799537536, 965852032, 369351808, 662886016, 86119808, <span class="keyword">...</span>
0362 865109888, 299633792, 422735488, 181087360, 174252416, <span class="keyword">...</span>
0363 1041212544, 840196224, 750314368, 391053440, 903306880, <span class="keyword">...</span>
0364 742365312, 236995200, 42492800, 946000512, 771692416, <span class="keyword">...</span>
0365 897405824, 613803136, 924258688, 808338304, 1038125440, <span class="keyword">...</span>
0366 683814272, 177186176, 766008960, 704549248, 194555008, <span class="keyword">...</span>
0367 306383744, 496592512, 416020864, 655186816, 1032204928, <span class="keyword">...</span>
0368 694773632, 577910144, 45797760, 910332544, 536014976, <span class="keyword">...</span>
0369 675946368, 987635840, 788223872, 353993856, 96313472, <span class="keyword">...</span>
0370 85248640]';
0371 DIRECT(1:MAXDIM,24)=[
0372 1073741760, 4210752, 12608, 744788544, 494377792, <span class="keyword">...</span>
0373 115601344, 769248448, 990895808, 851706304, 979326784, <span class="keyword">...</span>
0374 692061120, 429015104, 217132864, 736067008, 55694400, <span class="keyword">...</span>
0375 456152640, 631601984, 787264192, 898599104, 478383808, <span class="keyword">...</span>
0376 507774272, 458270272, 392995136, 872482496, 124824768, <span class="keyword">...</span>
0377 1034161344, 362141632, 1053833280, 943810496, 428920128, <span class="keyword">...</span>
0378 795835200, 835462848, 961843520, 606198080, 785652672, <span class="keyword">...</span>
0379 154954432, 491617344, 297351232, 580735552, 634587968, <span class="keyword">...</span>
0380 185277760, 141505600, 417673280, 106907456, 395575616, <span class="keyword">...</span>
0381 566958656, 352651200, 415242688, 26635200, 1030317504, <span class="keyword">...</span>
0382 247212992]';
0383 DIRECT(1:MAXDIM,25)=[
0384 1073741792, 543187040, 536882016, 981766752, 357858144, <span class="keyword">...</span>
0385 810665952, 369083488, 613015520, 86115232, 845149216, <span class="keyword">...</span>
0386 606076960, 1018241504, 35245536, 635403744, 236633696, <span class="keyword">...</span>
0387 407451232, 427671904, 460141792, 116344544, 990246688, <span class="keyword">...</span>
0388 1024892576, 883429408, 150655392, 173476896, 197666464, <span class="keyword">...</span>
0389 1016740448, 605376608, 970487008, 1006881248, 598265632, <span class="keyword">...</span>
0390 1022861728, 489055392, 216680608, 371439072, 53140576, <span class="keyword">...</span>
0391 965114400, 98534112, 209692256, 264598496, 321437280, <span class="keyword">...</span>
0392 545303840, 324119904, 876587488, 778239712, 802033120, <span class="keyword">...</span>
0393 44406496, 665829024, 803213920, 309742112, 735181344, <span class="keyword">...</span>
0394 1036125600]';
0395 DIRECT(1:MAXDIM,26)=[
0396 1073741808, 273698896, 805312112, 903123536, 153504624, <span class="keyword">...</span>
0397 689632208, 432848944, 859888752, 510853776, 240805744, <span class="keyword">...</span>
0398 250610192, 852489168, 139460144, 283082224, 222702928, <span class="keyword">...</span>
0399 342181488, 922872432, 187528656, 360637424, 814514736, <span class="keyword">...</span>
0400 301037840, 800872624, 272595184, 158627600, 238839088, <span class="keyword">...</span>
0401 927181136, 710248688, 788854608, 1048376560, 484709072, <span class="keyword">...</span>
0402 85709008, 1065469744, 429237328, 490778384, 848024144, <span class="keyword">...</span>
0403 443114288, 687907504, 474573648, 45706416, 681465296, <span class="keyword">...</span>
0404 805303216, 14567920, 369839504, 440402480, 797652624, <span class="keyword">...</span>
0405 115959088, 929784560, 91226544, 205943056, 288358704, <span class="keyword">...</span>
0406 950217296]';
0407 DIRECT(1:MAXDIM,27)=[
0408 1073741816, 947419256, 134232008, 460100200, 1073685336, <span class="keyword">...</span>
0409 398354904, 1069834248, 686054696, 108299224, 273898840, <span class="keyword">...</span>
0410 731382552, 938170664, 86812552, 677346808, 602208712, <span class="keyword">...</span>
0411 652635752, 209797064, 323968376, 384078968, 561178056, <span class="keyword">...</span>
0412 923399256, 996597176, 942777416, 885167400, 89791048, <span class="keyword">...</span>
0413 956122504, 87393464, 987661336, 993412952, 827749496, <span class="keyword">...</span>
0414 903211272, 33649816, 594875176, 65052056, 822835240, <span class="keyword">...</span>
0415 625704888, 1065374584, 612232920, 536299720, 1046858504, <span class="keyword">...</span>
0416 939518840, 160843032, 654656088, 744496936, 872197704, <span class="keyword">...</span>
0417 219111576, 829112632, 455614152, 1064192952, 313010856, <span class="keyword">...</span>
0418 820754920]';
0419 DIRECT(1:MAXDIM,28)=[
0420 1073741820, 71582788, 603989028, 37500, 120660, <span class="keyword">...</span>
0421 182195932, 213921796, 473570692, 41763004, 156352828, <span class="keyword">...</span>
0422 88343188, 698012780, 666108868, 337608156, 1054329884, <span class="keyword">...</span>
0423 799472220, 641885244, 392104980, 502284340, 1002405628, <span class="keyword">...</span>
0424 249907140, 75586228, 206587660, 565275348, 1021426548, <span class="keyword">...</span>
0425 425987996, 598058580, 401940420, 919427316, 822049324, <span class="keyword">...</span>
0426 115655868, 759299588, 562394644, 990942164, 1003212268, <span class="keyword">...</span>
0427 598750292, 675334852, 675293340, 445665316, 903023756, <span class="keyword">...</span>
0428 872412692, 172640916, 1051615436, 91229620, 94586692, <span class="keyword">...</span>
0429 344873452, 7029156, 683421900, 434258804, 955002092, <span class="keyword">...</span>
0430 436424380]';
0431 DIRECT(1:MAXDIM,29)=[
0432 1073741822, 644245094, 1040195102, 537039474, 537089354, <span class="keyword">...</span>
0433 642656334, 73402402, 664239174, 1014620426, 500917234, <span class="keyword">...</span>
0434 1042677826, 347788318, 1069154738, 373259762, 362587674, <span class="keyword">...</span>
0435 239395914, 132283950, 903121466, 445210638, 968851198, <span class="keyword">...</span>
0436 230153254, 935549622, 308815630, 861891286, 496995094, <span class="keyword">...</span>
0437 670740382, 657311830, 573565382, 248331478, 1064650798, <span class="keyword">...</span>
0438 338312798, 669059078, 1065190902, 379125622, 111897166, <span class="keyword">...</span>
0439 520650422, 740300390, 1046483950, 66254898, 992513134, <span class="keyword">...</span>
0440 234871606, 610553330, 450553866, 566758134, 787800806, <span class="keyword">...</span>
0441 1071709866, 971732606, 528102354, 790919122, 917384366, <span class="keyword">...</span>
0442 656244162]';
0443 DIRECT(1:MAXDIM,30)=[
0444 1073741823, 357913941, 50344755, 268538457, 805540473, <span class="keyword">...</span>
0445 3487029, 3146769, 592038967, 729591963, 781578389, <span class="keyword">...</span>
0446 66781679, 113956361, 331153483, 967802327, 935343371, <span class="keyword">...</span>
0447 324351309, 609305915, 818137857, 131059769, 918519549, <span class="keyword">...</span>
0448 827341719, 922770101, 456972047, 363883221, 1057014661, <span class="keyword">...</span>
0449 900956063, 580478293, 520383687, 315470533, 227601711, <span class="keyword">...</span>
0450 169598765, 909227271, 796983815, 349496709, 393974911, <span class="keyword">...</span>
0451 378320037, 777004343, 927999269, 616377385, 345930959, <span class="keyword">...</span>
0452 989849787, 627400495, 892675125, 260314121, 1041964063, <span class="keyword">...</span>
0453 531367163, 195776757, 237309785, 949187605, 719002587, <span class="keyword">...</span>
0454 495745187]';
0455 <span class="keyword">end</span>
0456
0457 <span class="comment">%</span>
0458 <span class="comment">% TRAP FOR A WRONG SUBROUTINE CALL</span>
0459 <span class="comment">%</span>
0460 <span class="keyword">if</span> ((I&lt;0) | (N&lt;1) | (I&gt;MAXNUM) | (N&gt;MAXDIM)),
0461 disp(<span class="string">'LP-TAU CALL FAILED'</span>)
0462 disp(<span class="string">' PRESS &lt;ENTER&gt; TO EXIT LPTAU'</span>)
0463 pause
0464 <span class="keyword">return</span>
0465 <span class="keyword">end</span>
0466 <span class="keyword">if</span> ((PRVNUM+1==I) &amp; (N&lt;=PRVDIM)),
0467 <span class="comment">%</span>
0468 <span class="comment">% RECURRENT GENERATION OF THE POINT</span>
0469 <span class="comment">%</span>
0470 <span class="comment">%</span>
0471 <span class="comment">% SEARCH POSITION OF THE RIGHTMOST &quot;1&quot;</span>
0472 <span class="comment">% IN THE BINARY REPRESENTATION OF I</span>
0473 <span class="comment">%</span>
0474 L=0;
0475 POS=0;
0476 <span class="keyword">while</span> L&lt;QP &amp; POS==0,
0477 L=L+1;
0478 POS=bitand(bitshift(I,-(L-1)),1);
0479 <span class="keyword">end</span>
0480 <span class="comment">%</span>
0481 <span class="comment">% RIGHTMOST POSITION IS L</span>
0482 <span class="comment">%</span>
0483 <span class="keyword">for</span> J=1:N
0484 MASKV(J)=bitxor(MASKV(J),DIRECT(J,L));
0485 VECTOR(J)=MASKV(J)*SCALE;
0486 <span class="keyword">end</span>
0487 <span class="keyword">else</span>
0488 <span class="comment">%</span>
0489 <span class="comment">% GENERATION OF THE POINT FROM &quot;I&quot; AND &quot;N&quot;</span>
0490 <span class="comment">%</span>
0491 MASKV=zeros(1,N);
0492 IM=bitxor(I,bitshift(I,-1));
0493 M=0;
0494 <span class="keyword">while</span> IM~=0 &amp; M&lt;QP,
0495 M=M+1;
0496 <span class="keyword">if</span> (bitand(IM,1)==1),
0497 <span class="keyword">for</span> J=1:N
0498 MASKV(J)=bitxor(MASKV(J),DIRECT(J,M));
0499 <span class="keyword">end</span>
0500 <span class="keyword">end</span>
0501 IM=bitshift(IM,-1);
0502 <span class="keyword">end</span>
0503 <span class="keyword">for</span> J=1:N
0504 VECTOR(J)=MASKV(J)*SCALE;
0505 <span class="keyword">end</span>
0506 <span class="keyword">end</span>
0507 <span class="comment">%</span>
0508 PRVNUM=I;
0509 PRVDIM=N;
0510 <span class="keyword">return</span>
0511
0512</pre></div>
<hr><address>Generated on Fri 16-Jun-2006 09:09:06 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
</body>
</html>