LUCENE-9235: upgrade all python to python3

Die, python2, die.

Some generated .java files change (parameterized automata for
spell-correction).

This is because the order of python dictionaries was not well-defined
previously. A sort() was added so that the python code now generates
reproducible output (Thanks @mikemccand).

So we'll suffer a change once, but the automata are equivalent. If you
run the script again you should not see source code changes.

The relevant unit tests are exhaustive (if you trust the paper!), so we can
be confident it does not break things, even though it looks very scary.
This commit is contained in:
Robert Muir 2020-02-20 21:27:38 -05:00
parent 79966132fc
commit 9302eee1e0
No known key found for this signature in database
GPG Key ID: 817AE1DD322D7ECA
10 changed files with 246 additions and 247 deletions

View File

@ -33,7 +33,7 @@ configure(rootProject) {
task installMoman(type: Download) {
def momanZip = file("${momanDir}/moman.zip")
src "https://bitbucket.org/jpbarrette/moman/get/5c5c2a1e4dea.zip"
src "https://github.com/jpbarrette/moman/archive/497c90e34e412b6494db6dabf0d95db8034bd325.zip"
dest momanZip
onlyIfModified true
@ -57,7 +57,7 @@ configure(project(":lucene:core")) {
logger.lifecycle("Executing: ${prog} in ${targetDir}")
project.exec {
workingDir targetDir
executable "python2.7"
executable "python3"
args = ['-B', "${prog}"]
}
}
@ -82,7 +82,7 @@ configure(project(":lucene:core")) {
['True', 'False'].each { transpose ->
project.exec {
workingDir targetDir
executable "python2.7"
executable "python3"
args = ['-B', 'createLevAutomata.py', num, transpose, "${momanDir}/finenight/python"]
}
}

View File

@ -45,7 +45,7 @@
<target name="generate-jflex-html-char-entities">
<exec dir="src/java/org/apache/lucene/analysis/charfilter"
output="src/java/org/apache/lucene/analysis/charfilter/HTMLCharacterEntities.jflex"
executable="${python2.exe}" failonerror="true" logerror="true">
executable="${python3.exe}" failonerror="true" logerror="true">
<!-- Tell Python not to write any bytecode cache into the filesystem: -->
<arg value="-B"/>
<arg value="htmlentity.py"/>

View File

@ -248,8 +248,6 @@
<property name="git.exe" value="git" />
<property name="perl.exe" value="perl" />
<!-- we default to python2.7 because not all OSs (e.g. mac) have a python2 link -->
<property name="python2.exe" value="python2.7" />
<property name="python3.exe" value="python3" />
<property name="gpg.exe" value="gpg" />

View File

@ -26,8 +26,8 @@
<property name="javac.profile.args" value="-profile compact1"/>
<import file="../common-build.xml"/>
<property name="moman.commit-hash" value="5c5c2a1e4dea" />
<property name="moman.url" value="https://bitbucket.org/jpbarrette/moman/get/${moman.commit-hash}.zip" />
<property name="moman.commit-hash" value="497c90e34e412b6494db6dabf0d95db8034bd325" />
<property name="moman.url" value="https://github.com/jpbarrette/moman/archive/${moman.commit-hash}.zip" />
<path id="classpath"/>
@ -69,7 +69,7 @@
<attribute name="n"/>
<sequential>
<exec dir="src/java/org/apache/lucene/util/automaton"
executable="${python2.exe}" failonerror="true">
executable="${python3.exe}" failonerror="true">
<!-- Tell Python not to write any bytecode cache into the filesystem: -->
<arg value="-B"/>
<arg value="createLevAutomata.py"/>
@ -79,7 +79,7 @@
<arg value="../../../../../../../../build/core/moman/finenight/python"/>
</exec>
<exec dir="src/java/org/apache/lucene/util/automaton"
executable="${python2.exe}" failonerror="true">
executable="${python3.exe}" failonerror="true">
<!-- Tell Python not to write any bytecode cache into the filesystem: -->
<arg value="-B"/>
<arg value="createLevAutomata.py"/>
@ -94,13 +94,13 @@
<target name="createPackedIntSources">
<exec dir="src/java/org/apache/lucene/util/packed"
executable="${python2.exe}" failonerror="true">
executable="${python3.exe}" failonerror="true">
<!-- Tell Python not to write any bytecode cache into the filesystem: -->
<arg value="-B"/>
<arg value="gen_BulkOperation.py"/>
</exec>
<exec dir="src/java/org/apache/lucene/util/packed"
executable="${python2.exe}" failonerror="true">
executable="${python3.exe}" failonerror="true">
<!-- Tell Python not to write any bytecode cache into the filesystem: -->
<arg value="-B"/>
<arg value="gen_Packed64SingleBlock.py"/>

View File

@ -88,26 +88,26 @@ class Lev1ParametricDescription extends ParametricDescription {
// 4 vectors; 5 states per vector; array length = 20
private final static long[] toStates2 = new long[] /*3 bits per value */ {
0x69a292450428003L
0x4da292442420003L
};
private final static long[] offsetIncrs2 = new long[] /*2 bits per value */ {
0x5555588000L
0x5555528000L
};
// 8 vectors; 5 states per vector; array length = 40
private final static long[] toStates3 = new long[] /*3 bits per value */ {
0x1690a82152018003L,0xb1a2d346448a49L
0x14d0812112018003L,0xb1a29b46d48a49L
};
private final static long[] offsetIncrs3 = new long[] /*2 bits per value */ {
0x555555b8220f0000L,0x5555L
0x555555e80a0f0000L,0x5555L
};
// state map
// 0 -> [(0, 0)]
// 1 -> [(0, 1)]
// 2 -> [(0, 1), (1, 1)]
// 3 -> [(0, 1), (2, 1)]
// 4 -> [(0, 1), (1, 1), (2, 1)]
// 3 -> [(0, 1), (1, 1), (2, 1)]
// 4 -> [(0, 1), (2, 1)]
public Lev1ParametricDescription(int w) {

View File

@ -89,27 +89,27 @@ class Lev1TParametricDescription extends ParametricDescription {
// 4 vectors; 6 states per vector; array length = 24
private final static long[] toStates2 = new long[] /*3 bits per value */ {
0x3453491482140003L,0x6dL
0xb45a491412180003L,0x69L
};
private final static long[] offsetIncrs2 = new long[] /*2 bits per value */ {
0x555555a20000L
0x5555558a0000L
};
// 8 vectors; 6 states per vector; array length = 48
private final static long[] toStates3 = new long[] /*3 bits per value */ {
0x21520854900c0003L,0x5b4d19a24534916dL,0xda34L
0xa1904864900c0003L,0x5a6d196a45a49169L,0x9634L
};
private final static long[] offsetIncrs3 = new long[] /*2 bits per value */ {
0x5555ae0a20fc0000L,0x55555555L
0x5555ba08a0fc0000L,0x55555555L
};
// state map
// 0 -> [(0, 0)]
// 1 -> [(0, 1)]
// 2 -> [(0, 1), (1, 1)]
// 3 -> [(0, 1), (2, 1)]
// 4 -> [t(0, 1), (0, 1), (1, 1), (2, 1)]
// 5 -> [(0, 1), (1, 1), (2, 1)]
// 3 -> [(0, 1), (1, 1), (2, 1)]
// 4 -> [(0, 1), (2, 1)]
// 5 -> [t(0, 1), (0, 1), (1, 1), (2, 1)]
public Lev1TParametricDescription(int w) {

View File

@ -84,7 +84,7 @@ class Lev2ParametricDescription extends ParametricDescription {
// 1 vectors; 3 states per vector; array length = 3
private final static long[] toStates0 = new long[] /*2 bits per value */ {
0x23L
0xeL
};
private final static long[] offsetIncrs0 = new long[] /*1 bits per value */ {
0x0L
@ -92,7 +92,7 @@ class Lev2ParametricDescription extends ParametricDescription {
// 2 vectors; 5 states per vector; array length = 10
private final static long[] toStates1 = new long[] /*3 bits per value */ {
0x13688b44L
0x1a688a2cL
};
private final static long[] offsetIncrs1 = new long[] /*1 bits per value */ {
0x3e0L
@ -100,41 +100,41 @@ class Lev2ParametricDescription extends ParametricDescription {
// 4 vectors; 11 states per vector; array length = 44
private final static long[] toStates2 = new long[] /*4 bits per value */ {
0x26a09a0a0520a504L,0x2323523321a260a2L,0x354235543213L
0x3a07603570707054L,0x522323232103773aL,0x352254543213L
};
private final static long[] offsetIncrs2 = new long[] /*2 bits per value */ {
0x5555520280000800L,0x555555L
0x5555520880080000L,0x555555L
};
// 8 vectors; 21 states per vector; array length = 168
private final static long[] toStates3 = new long[] /*5 bits per value */ {
0x380e014a051404L,0xe28245009451140L,0x8a26880098a6268cL,0x180a288ca0246213L,
0x494053284a1080e1L,0x510265a89c311940L,0x4218c41188a6509cL,0x6340c4211c4710dL,
0xa168398471882a12L,0x104c841c683a0425L,0x3294472904351483L,0xe6290620a84a20d0L,
0x1441a0ea2896a4a0L,0x32L
0x7000a560180380a4L,0xc015a0180a0194aL,0x8032c58318a301c0L,0x9d8350d403980318L,
0x3006028ca73a8602L,0xc51462640b21a807L,0x2310c4100c62194eL,0xce35884218ce248dL,
0xa9285a0691882358L,0x1046b5a86b1252b5L,0x2110a33892521483L,0xe62906208d63394eL,
0xd6a29c4921d6a4a0L,0x1aL
};
private final static long[] offsetIncrs3 = new long[] /*2 bits per value */ {
0x33300230c0000800L,0x220ca080a00fc330L,0x555555f832823380L,0x5555555555555555L,
0xf0c000c8c0080000L,0xca808822003f303L,0x5555553fa02f0880L,0x5555555555555555L,
0x5555555555555555L,0x5555L
};
// 16 vectors; 30 states per vector; array length = 480
private final static long[] toStates4 = new long[] /*5 bits per value */ {
0x380e014a051404L,0xaa015452940L,0x55014501000000L,0x1843ddc771085c07L,
0x7141200040108405L,0x52b44004c5313460L,0x401080200063115cL,0x85314c4d181c5048L,
0x1440190a3e5c7828L,0x28a232809100a21L,0xa028ca2a84203846L,0xca0240010800108aL,
0xc7b4205c1580a508L,0x1021090251846b6L,0x4cb513862328090L,0x210863128ca2b8a2L,
0x4e188ca024402940L,0xa6b6c7c520532d4L,0x8c41101451150219L,0xa0c4211c4710d421L,
0x2108421094e15063L,0x8f13c43708631044L,0x18274d908c611631L,0x1cc238c411098263L,
0x450e3a1d0212d0b4L,0x31050242048108c6L,0xfa318b42d07308eL,0xa8865182356907c6L,
0x1ca410d4520c4140L,0x2954e13883a0ca51L,0x3714831044229442L,0x93946116b58f2c84L,
0xc41109a5631a574dL,0x1d4512d4941cc520L,0x52848294c643883aL,0xb525073148310502L,
0xa5356939460f7358L,0x409ca651L
0x7000a560180380a4L,0xa000000280e0294aL,0x6c0b00e029000000L,0x8c4350c59cdc6039L,
0x600ad00c03380601L,0x2962c18c5180e00L,0x18c4000c6028c4L,0x8a314603801802b4L,
0x6328c4520c59c5L,0x60d43500e600c651L,0x280e339cea180a7L,0x4039800000a318c6L,
0xd57be96039ec3d0dL,0xc0338d6358c4352L,0x28c4c81643500e60L,0x3194a028c4339d8aL,
0x590d403980018c4L,0xc4522d57b68e3132L,0xc4100c6510d6538L,0x9884218ce248d231L,
0x318ce318c6398d83L,0xa3609c370c431046L,0xea3ad6958568f7beL,0x2d0348c411d47560L,
0x9ad43989295ad494L,0x3104635ad431ad63L,0x8f73a6b5250b40d2L,0x57350eab9d693956L,
0x8ce24948520c411dL,0x294a398d85608442L,0x5694831046318ce5L,0x958460f7b623609cL,
0xc411d475616258d6L,0x9243ad4941cc520L,0x5ad4529ce39ad456L,0xb525073148310463L,
0x27656939460f7358L,0x1d573516L
};
private final static long[] offsetIncrs4 = new long[] /*3 bits per value */ {
0x20c0600000010000L,0x2000040000000001L,0x209204a40209L,0x301b6c0618018618L,
0x207206186000186cL,0x1200061b8e06dc0L,0x480492080612010L,0xa20204a040048000L,
0x1061a0000129124L,0x1848349b680612L,0xd26da0204a041868L,0x2492492492496128L,
0x610600010000000L,0x2040000000001000L,0x1044209245200L,0x80d86d86006d80c0L,
0x2001b6030000006dL,0x8200011b6237237L,0x12490612400410L,0x2449001040208000L,
0x4d80820001044925L,0x6da4906da400L,0x9252369001360208L,0x24924924924911b6L,
0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,
0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,
0x2492492492492492L,0x9249249249249249L,0x24924924L
@ -142,33 +142,33 @@ class Lev2ParametricDescription extends ParametricDescription {
// 32 vectors; 30 states per vector; array length = 960
private final static long[] toStates5 = new long[] /*5 bits per value */ {
0x380e014a051404L,0xaa015452940L,0x8052814501000000L,0xb80a515450000e03L,
0x5140410842108426L,0x71dc421701c01540L,0x100421014610f7L,0x85c0700550145010L,
0x94a271843ddc7710L,0x1346071412108a22L,0x3115c52b44004c53L,0xc504840108020006L,
0x54d1001314c4d181L,0x9081204239c4a71L,0x14c5313460714124L,0x51006428f971e0a2L,
0x4d181c5048402884L,0xa3e5c782885314cL,0x2809409482a8a239L,0x2a84203846028a23L,
0x10800108aa028caL,0xe1180a288ca0240L,0x98c6b80e3294a108L,0x2942328091098c10L,
0x11adb1ed08170560L,0xa024004084240946L,0x7b4205c1580a508cL,0xa8c2968c71846b6cL,
0x4cb5138623280910L,0x10863128ca2b8a20L,0xe188ca0244029402L,0x4e3294e288132d44L,
0x809409ad1218c39cL,0xf14814cb51386232L,0x514454086429adb1L,0x32d44e188ca02440L,
0x8c390a6b6c7c5205L,0xd4218c41409cd2aaL,0x5063a0c4211c4710L,0x10442108421094e1L,
0x31084711c4350863L,0xbdef7bddf05918f2L,0xc4f10dc218c41ef7L,0x9d3642318458c63L,
0x70863104426098c6L,0x8c6116318f13c43L,0x41ef75dd6b5de4d9L,0xd0212d0b41cc238cL,
0x2048108c6450e3a1L,0x42d07308e3105024L,0xdb591938f274084bL,0xc238c41f77deefbbL,
0x1f183e8c62d0b41cL,0x502a2194608d5a4L,0xa318b42d07308e31L,0xed675db56907c60fL,
0xa410d4520c41f773L,0x54e13883a0ca511cL,0x1483104422944229L,0x20f2329447290435L,
0x1ef6f7ef6f7df05cL,0xad63cb210dc520c4L,0x58c695d364e51845L,0xc843714831044269L,
0xe4d93946116b58f2L,0x520c41ef717d6b17L,0x83a1d4512d4941ccL,0x50252848294c6438L,
0x144b525073148310L,0xefaf7b591c20f275L,0x941cc520c41f777bL,0xd5a4e5183dcd62d4L,
0x4831050272994694L,0x460f7358b5250731L,0xf779bd6717b56939L
0x7000a560180380a4L,0xa000000280e0294aL,0x580600e029000000L,0x80e0600e529c0029L,
0x380a418c6388c631L,0x316737180e5b02c0L,0x300ce01806310d4L,0xc60396c0b00e0290L,
0xca328c4350c59cdL,0x80e00600ad194656L,0x28c402962c18c51L,0x802b40018c4000c6L,
0xe58b06314603801L,0x8d6b48c6b580e348L,0x28c5180e00600ad1L,0x18ca31148316716L,
0x3801802b4031944L,0xc4520c59c58a3146L,0xe61956748cab38L,0x39cea180a760d435L,
0xa318c60280e3L,0x6029d8350d403980L,0x6b5a80e060d873a8L,0xf43500e618c638dL,
0x10d4b55efa580e7bL,0x3980300ce358d63L,0x57be96039ec3d0d4L,0x4656567598c4352dL,
0x8c4c81643500e619L,0x194a028c4339d8a2L,0x590d403980018c43L,0xe348d87628a31320L,
0xe618d6b4d6b1880L,0x5eda38c4c8164350L,0x19443594e31148b5L,0x31320590d4039803L,
0x7160c4522d57b68eL,0xd2310c41195674d6L,0x8d839884218ce248L,0x1046318ce318c639L,
0x2108633892348c43L,0xdebfbdef0f63b0f6L,0xd8270dc310c41f7bL,0x8eb5a5615a3defa8L,
0x70c43104751d583aL,0x58568f7bea3609c3L,0x41f77ddb7bbeed69L,0x9295ad4942d0348cL,
0xad431ad639ad4398L,0x5250b40d23104635L,0xce0f6bd0f624a56bL,0x348c41f7b9cd7bdL,
0xe55a3dce9ad4942dL,0x4755cd43aae75a4L,0x73a6b5250b40d231L,0xbd7bbcdd6939568fL,
0xe24948520c41f779L,0x4a398d856084428cL,0x14831046318ce529L,0xb16c2110a3389252L,
0x1f7bdebe739c8f63L,0xed88d82715a520c4L,0x58589635a561183dL,0x9c569483104751dL,
0xc56958460f7b6236L,0x520c41f77ddb6719L,0x45609243ad4941ccL,0x4635ad4529ce39adL,
0x90eb525073148310L,0xd6737b8f6bd16c24L,0x941cc520c41f7b9cL,0x95a4e5183dcd62d4L,
0x483104755cd4589dL,0x460f7358b5250731L,0xf779bd6717b56939L
};
private final static long[] offsetIncrs5 = new long[] /*3 bits per value */ {
0x20c0600000010000L,0x40000000001L,0xb6db6d4830180L,0x4812900824800010L,
0x2092000040000082L,0x618000b659254a40L,0x86c301b6c0618018L,0xdb01860061860001L,
0x81861800075baed6L,0x186e381b70081cL,0xe56dc02072061860L,0x61201001200075b8L,
0x480000480492080L,0x52b5248201848040L,0x880812810012000bL,0x4004800004a4492L,
0xb529124a20204aL,0x49b68061201061a0L,0x8480418680018483L,0x1a000752ad26da01L,
0x4a349b6808128106L,0xa0204a0418680018L,0x492492497528d26dL,0x2492492492492492L,
0x610600010000000L,0x40000000001000L,0xb6d56da184180L,0x824914800810000L,
0x2002040000000411L,0xc0000b2c5659245L,0x6d80d86d86006d8L,0x1b61801b60300000L,
0x6d80c0000b5b76b6L,0x46d88dc8dc800L,0x6372372001b60300L,0x400410082000b1b7L,
0x2080000012490612L,0x6d49241849001040L,0x912400410082000bL,0x402080004112494L,
0xb2c49252449001L,0x4906da4004d80820L,0x136020800006daL,0x82000b5b69241b69L,
0x6da4948da4004d80L,0x3690013602080004L,0x49249249b1b69252L,0x2492492492492492L,
0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,
0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,
0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,
@ -179,38 +179,38 @@ class Lev2ParametricDescription extends ParametricDescription {
// state map
// 0 -> [(0, 0)]
// 1 -> [(0, 2)]
// 2 -> [(0, 1)]
// 1 -> [(0, 1)]
// 2 -> [(0, 2)]
// 3 -> [(0, 1), (1, 1)]
// 4 -> [(0, 2), (1, 2)]
// 5 -> [(0, 2), (2, 1)]
// 6 -> [(0, 1), (2, 2)]
// 7 -> [(0, 2), (2, 2)]
// 8 -> [(0, 1), (1, 1), (2, 1)]
// 9 -> [(0, 2), (1, 2), (2, 2)]
// 10 -> [(0, 1), (2, 1)]
// 11 -> [(0, 2), (3, 2)]
// 12 -> [(0, 2), (1, 2), (3, 2)]
// 13 -> [(0, 2), (1, 2), (2, 2), (3, 2)]
// 14 -> [(0, 1), (2, 2), (3, 2)]
// 15 -> [(0, 2), (3, 1)]
// 16 -> [(0, 1), (3, 2)]
// 17 -> [(0, 1), (1, 1), (3, 2)]
// 18 -> [(0, 2), (1, 2), (3, 1)]
// 19 -> [(0, 2), (2, 2), (3, 2)]
// 20 -> [(0, 2), (2, 1), (3, 1)]
// 21 -> [(0, 2), (2, 1), (4, 2)]
// 22 -> [(0, 2), (1, 2), (4, 2)]
// 5 -> [(0, 1), (1, 1), (2, 1)]
// 6 -> [(0, 2), (1, 2), (2, 2)]
// 7 -> [(0, 1), (2, 1)]
// 8 -> [(0, 1), (2, 2)]
// 9 -> [(0, 2), (2, 1)]
// 10 -> [(0, 2), (2, 2)]
// 11 -> [(0, 2), (1, 2), (2, 2), (3, 2)]
// 12 -> [(0, 1), (1, 1), (3, 2)]
// 13 -> [(0, 1), (2, 2), (3, 2)]
// 14 -> [(0, 1), (3, 2)]
// 15 -> [(0, 2), (1, 2), (3, 1)]
// 16 -> [(0, 2), (1, 2), (3, 2)]
// 17 -> [(0, 2), (2, 1), (3, 1)]
// 18 -> [(0, 2), (2, 2), (3, 2)]
// 19 -> [(0, 2), (3, 1)]
// 20 -> [(0, 2), (3, 2)]
// 21 -> [(0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 22 -> [(0, 2), (1, 2), (2, 2), (4, 2)]
// 23 -> [(0, 2), (1, 2), (3, 2), (4, 2)]
// 24 -> [(0, 2), (2, 2), (3, 2), (4, 2)]
// 25 -> [(0, 2), (3, 2), (4, 2)]
// 26 -> [(0, 2), (1, 2), (2, 2), (4, 2)]
// 27 -> [(0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 28 -> [(0, 2), (4, 2)]
// 29 -> [(0, 2), (2, 2), (4, 2)]
// 24 -> [(0, 2), (1, 2), (4, 2)]
// 25 -> [(0, 2), (2, 1), (4, 2)]
// 26 -> [(0, 2), (2, 2), (3, 2), (4, 2)]
// 27 -> [(0, 2), (2, 2), (4, 2)]
// 28 -> [(0, 2), (3, 2), (4, 2)]
// 29 -> [(0, 2), (4, 2)]
public Lev2ParametricDescription(int w) {
super(w, 2, new int[] {0,2,1,0,1,-1,0,0,-1,0,-1,-1,-1,-1,-1,-2,-1,-1,-2,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2});
super(w, 2, new int[] {0,1,2,0,1,-1,0,-1,0,-1,0,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2});
}
}

View File

@ -85,7 +85,7 @@ class Lev2TParametricDescription extends ParametricDescription {
// 1 vectors; 3 states per vector; array length = 3
private final static long[] toStates0 = new long[] /*2 bits per value */ {
0x23L
0xeL
};
private final static long[] offsetIncrs0 = new long[] /*1 bits per value */ {
0x0L
@ -93,7 +93,7 @@ class Lev2TParametricDescription extends ParametricDescription {
// 2 vectors; 5 states per vector; array length = 10
private final static long[] toStates1 = new long[] /*3 bits per value */ {
0x13688b44L
0x1a688a2cL
};
private final static long[] offsetIncrs1 = new long[] /*1 bits per value */ {
0x3e0L
@ -101,51 +101,51 @@ class Lev2TParametricDescription extends ParametricDescription {
// 4 vectors; 13 states per vector; array length = 52
private final static long[] toStates2 = new long[] /*4 bits per value */ {
0x60dbb0b05200b504L,0x5233217627062227L,0x2355543214323235L,0x4354L
0xdc0703570707054L,0x2323213a03dd3a3aL,0x2254543215435223L,0x5435L
};
private final static long[] offsetIncrs2 = new long[] /*2 bits per value */ {
0x555080a800002000L,0x5555555555L
0x5558208800080000L,0x5555555555L
};
// 8 vectors; 28 states per vector; array length = 224
private final static long[] toStates3 = new long[] /*5 bits per value */ {
0xe701c02940059404L,0xa010162000a50000L,0xb02c8c40a1416288L,0xa821032310858c0L,
0x314423980d28b201L,0x5281e528847788e0L,0xa23980d308c2280eL,0x1e3294b1a962278cL,
0x8c41309e2288e528L,0x11444409021aca21L,0x11a4624886b1086bL,0x2a6258941d6240c4L,
0x5024a50b489074adL,0x14821aca520c411aL,0x5888b5890b594a44L,0x941d6520c411a465L,
0x8b589075ad6a62d4L,0x1a5055a4L
0x700a5701c0380a4L,0x180a000ca529c0L,0xc5498e60a80af180L,0x8c4300e85a546398L,
0xd8d43501ac18c601L,0x51976d6a863500adL,0xc3501ac28ca0180aL,0x76dda8a5b0c5be16L,
0xc41294a018c4519L,0x1086520ce248d231L,0x13946358ce31ac42L,0x6732d4942d0348c4L,
0xd635ad4b1ad224a5L,0xce24948520c4139L,0x58ce729d22110a52L,0x941cc520c41394e3L,
0x4729d22490e732d4L,0x39ce35adL
};
private final static long[] offsetIncrs3 = new long[] /*2 bits per value */ {
0x30c30200002000L,0x2a0030f3c3fc333cL,0x233a00328282a820L,0x5555555532b283a8L,
0xc0c83000080000L,0x2200fcff300f3c30L,0x3c2200a8caa00a08L,0x55555555a8fea00aL,
0x5555555555555555L,0x5555555555555555L,0x5555555555555555L
};
// 16 vectors; 45 states per vector; array length = 720
private final static long[] toStates4 = new long[] /*6 bits per value */ {
0x3801450002c5004L,0xc500014b00000e38L,0x51451401402L,0x0L,
0x518000b14010000L,0x9f1c20828e20230L,0x219f0df0830a70c2L,0x8200008208208200L,
0x805050160800800L,0x3082098602602643L,0x4564014250508064L,0x850051420000831L,
0x4140582085002082L,0x456180980990c201L,0x8316d0c50a01051L,0x21451420050df0e0L,
0xd14214014508214L,0x3c21c01850821c60L,0x1cb1403cb142087L,0x800821451851822cL,
0x20020820800020L,0xd006182087180345L,0xcb0a81cb24976b09L,0x8b1a60e624709d1L,
0x249082082249089L,0xc31421c600d2c024L,0x3c31451515454423L,0x31853c22c21cb140L,
0x4514500b2c208214L,0x8718034508b0051L,0xb2cb45515108f0c5L,0xe824715d1cb0a810L,
0x1422cb14908b0e60L,0x30812c22c02cb145L,0x842022020cb1420cL,0x5c20ce0820ce0850L,
0x208208208b0d70c2L,0x4208508214214208L,0x920834050830c20L,0xc6134dc613653592L,
0xd309341c6dc4db4dL,0x6424d90854d34d34L,0x92072c22030814c2L,0x4220724b24a30930L,
0x2470d72025c920e2L,0x92c92d70975c9082L,0xcb0880c204924e08L,0x45739728c24c2481L,
0xc6da4db5da6174daL,0x4b5d35d75d30971dL,0x1030815c93825ce2L,0x51442051020cb145L,
0xc538210e2c220e2cL,0x851421452cb0d70L,0x204b085085145142L,0x921560834051440cL,
0x4d660e4da60e6595L,0x94d914e41c6dc658L,0x826426591454d365L,0x2892072c51030813L,
0xe2c22072cb2ca30bL,0x452c70d720538910L,0x8b2cb2d708e3891L,0x81cb1440c204b24eL,
0xda44e38e28c2ca24L,0x1dc6da6585d660e4L,0xe2cb5d338e5d914eL,0x38938238L
0x1453803801c0144L,0xc000514514700038L,0x1400001401L,0x140000L,
0x6301f00700510000L,0xa186178301f00d1L,0xc20c30c20ca0c3L,0xc00c00cd0c30030cL,
0x4c054014f0c00c30L,0x55150c34c30944c3L,0x430c014308300550L,0xc30850c00050c31L,
0x50053c50c3143000L,0x850d30c25130d301L,0xc21441430a08608L,0x2145003143142145L,
0x4c1431451400c314L,0x28014d6c32832803L,0x1c50c76cd34a0c3L,0x430c30c31c314014L,
0xc30050000001431L,0xd36d0e40ca00d303L,0xcb2abb2c90b0e400L,0x2c32ca2c70c20ca1L,
0x31c00c00cd2c70cbL,0x558328034c2c32cL,0x6cd6ca14558309b7L,0x51c51401430850c7L,
0xc30871430c714L,0xca00d3071451450L,0xb9071560c26dc156L,0xc70c21441cb2abb2L,
0x1421c70cb1c51ca1L,0x30811c51c51c00c3L,0xc51031c224324308L,0x5c33830d70820820L,
0x30c30c30c33850c3L,0x451450c30c30c31cL,0xda0920d20c20c20L,0x365961145145914fL,
0xd964365351965865L,0x51964364365a6590L,0x920b203243081505L,0xd72422492c718b28L,
0x2cb3872c35cb28b0L,0xb0c32cb2972c30d7L,0xc80c90c204e1c75cL,0x4504171c62ca2482L,
0x33976585d65d9610L,0x4b5ca5d70d95cb5dL,0x1030813873975c36L,0x41451031c2245105L,
0xc35c338714e24208L,0x1c51c51451453851L,0x20451450c70c30c3L,0x4f0da09214f1440cL,
0x6533944d04513d41L,0xe15450551350e658L,0x551938364365a50L,0x2892071851030815L,
0x714e2422441c718bL,0x4e1c73871c35cb28L,0x5c70c32cb28e1c51L,0x81c61440c204e1c7L,
0xd04503ce1c62ca24L,0x39338e6585d63944L,0x364b5ca38e154387L,0x38739738L
};
private final static long[] offsetIncrs4 = new long[] /*3 bits per value */ {
0x3002000000080000L,0x20c060L,0x8149000004000000L,0x4024924110824824L,
0xdb6030c360002082L,0x6c36c06c301b0d80L,0xb01861b0000db0dbL,0x1b7036209188e06dL,
0x800920006d86db7L,0x4920c2402402490L,0x49000208249009L,0x4908128128124804L,
0x34800104124a44a2L,0xc30930900d24020cL,0x40009a0924c24d24L,0x4984a069201061aL,
0x494d049271269262L,0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,
0xc0000010000000L,0x40000060061L,0x8001000800000000L,0x8229048249248a4L,
0x6c360300002092L,0x6db6036db61b6c30L,0x361b0180000db6c0L,0xdb11b71b91b72000L,
0x100820006db6236L,0x2492490612480012L,0x8041000248200049L,0x4924a48924000900L,
0x2080012510822492L,0x9241b69200048360L,0x4000926806da4924L,0x291b49000241b010L,
0x494934236d249249L,0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,
0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,
0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,
0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,
@ -154,51 +154,51 @@ class Lev2TParametricDescription extends ParametricDescription {
// 32 vectors; 45 states per vector; array length = 1440
private final static long[] toStates5 = new long[] /*6 bits per value */ {
0x3801450002c5004L,0xc500014b00000e38L,0x51451401402L,0x0L,
0x514000b14010000L,0x550000038e00e0L,0x264518500600b180L,0x8208208208208208L,
0x2c50040820820L,0x70820a38808c0146L,0xc37c20c29c30827cL,0x20820820800867L,
0xb140102002002080L,0x828e202300518000L,0x830a70c209f1c20L,0x51451450853df0dfL,
0x1614214214508214L,0x6026026430805050L,0x2505080643082098L,0x4200008314564014L,
0x850020820850051L,0x80990c2014140582L,0x8201920208261809L,0x892051990060941L,
0x22492492c22cb242L,0x430805050162492cL,0x8041451586026026L,0x37c38020c5b43142L,
0x4208508514508014L,0x141405850850051L,0x51456180980990c2L,0xe008316d0c50a010L,
0x2c52cb2c508b21f0L,0x600d2c92c22cb249L,0x873c21c01850821cL,0x2c01cb1403cb1420L,
0x2080082145185182L,0x4500200208208000L,0x870061420871803L,0x740500f5050821cfL,
0x934d964618609000L,0x4c24d34d30824d30L,0x1860821c600d642L,0xc2a072c925dac274L,
0x2c69839891c27472L,0x9242082089242242L,0x8208718034b00900L,0x1cb24976b09d0061L,
0x60e624709d1cb0a8L,0xd31455d71574ce3eL,0x1c600d3825c25d74L,0x51515454423c3142L,
0xc22c21cb1403c314L,0xb2c20821431853L,0x34508b005145145L,0x5515108f0c508718L,
0x8740500f2051454L,0xe2534d920618f090L,0x493826596592c238L,0x4423c31421c600d6L,
0x72c2a042cb2d1545L,0x422c3983a091c574L,0xb2c514508b2c52L,0xf0c508718034b08bL,
0xa810b2cb45515108L,0x2260e824715d1cb0L,0xe6592c538e2d74ceL,0x420c308138938238L,
0x850842022020cb1L,0x70c25c20ce0820ceL,0x4208208208208b0dL,0xc20420850821421L,
0x21080880832c5083L,0xa50838820838c214L,0xaaaaaaaaa9c39430L,0x1aaa7eaa9fa9faaaL,
0x824820d01420c308L,0x7184d37184d94d64L,0x34c24d071b7136d3L,0x990936421534d34dL,
0x834050830c20530L,0x34dc613653592092L,0xa479c6dc4db4dc61L,0x920a9f924924924aL,
0x72c220308192a82aL,0x724b24a30930920L,0xd72025c920e2422L,0x92d70975c9082247L,
0x880c204924e0892cL,0x2c928c24c2481cb0L,0x80a5248889088749L,0x6a861b2aaac74394L,
0x81b2ca6ab27b278L,0xa3093092072c2203L,0xd76985d36915ce5cL,0x5d74c25c771b6936L,
0x724e0973892d74d7L,0x4c2481cb0880c205L,0x6174da45739728c2L,0x4aa175c6da4db5daL,
0x6a869b2786486186L,0xcb14510308186caL,0x220e2c5144205102L,0xcb0d70c538210e2cL,
0x1451420851421452L,0x51440c204b085085L,0xcb1451081440832cL,0x94316208488b0888L,
0xfaaa7dfa9f7e79c3L,0x30819ea7ea7df7dL,0x6564855820d01451L,0x9613598393698399L,
0xd965364539071b71L,0x4e0990996451534L,0x21560834051440c2L,0xd660e4da60e65959L,
0x9207e979c6dc6584L,0xa82a8207df924820L,0x892072c5103081a6L,0x2c22072cb2ca30b2L,
0x52c70d720538910eL,0x8b2cb2d708e38914L,0x1cb1440c204b24e0L,0x874b2cb28c2ca248L,
0x4394816224488b08L,0x9e786aa69b1f7e77L,0x51030819eca6a9e7L,0x8e38a30b2892072cL,
0x6996175983936913L,0x74ce39764538771bL,0xc204e24e08e38b2dL,0x28c2ca2481cb1440L,
0x85d660e4da44e38eL,0x698607e975c6da65L,0xa6ca6aa699e7864aL
0x1453803801c0144L,0xc000514514700038L,0x1400001401L,0x140000L,
0x4e00e00700510000L,0x3451451c000e0051L,0x30cd00000d015000L,0xc30c30d40c30c30cL,
0x7c01c01440c30c30L,0x185e0c07c03458c0L,0x830c30832830c286L,0x33430c00c30030L,
0x70051030030c3003L,0x8301f00d16301f00L,0xc20ca0c30a18617L,0xb1450c51431420c3L,
0x4f14314514314315L,0x4c30944c34c05401L,0x30830055055150c3L,0xc00050c31430c014L,
0xc31430000c30850L,0x25130d30150053c5L,0xc03541545430d30cL,0x1cb2cd0c300d0c90L,
0x72c30cb2c91cb0c3L,0xc34c054014f1cb2cL,0x8218221434c30944L,0x50851430851050c2L,
0x30c50851400c50cL,0x150053c50c51450L,0x8850d30c25130d3L,0x450c21441430a086L,
0x1c91c70c51cb1c21L,0x34c1cb1c71c314bL,0xc328014d6c328328L,0x1401c50c76cd34a0L,
0x31430c30c31c3140L,0x30c300500000014L,0x535b0ca0ca00d3L,0x514369b34d2830caL,
0x5965965a0c500d01L,0x6435030c30d46546L,0xdb4390328034c659L,0xcaaecb242c390034L,
0xcb28b1c30832872L,0x700300334b1c32cbL,0xe40ca00d30b0cb0cL,0xb2c90b0e400d36d0L,
0xa2c70c20ca1cb2abL,0x4315b5ce6575d95cL,0x28034c5d95c53831L,0xa14558309b705583L,
0x401430850c76cd6cL,0x871430c71451c51L,0xd3071451450000c3L,0x560c26dc1560ca00L,
0xc914369b35b2851L,0x465939451a14500dL,0x945075030cb2c939L,0x9b70558328034c3L,
0x72caaecae41c5583L,0xc71472871c308510L,0x1470030c50871c32L,0xc1560ca00d307147L,
0xabb2b9071560c26dL,0x38a1c70c21441cb2L,0x314b1c938e657394L,0x4308308139438738L,
0x820c51031c22432L,0x50c35c33830d7082L,0xc31c30c30c30c338L,0xc20451450c30c30L,
0x31440c70890c90c2L,0xea0df0c3a8208208L,0xa28a28a28a231430L,0x1861868a28a28a1eL,
0xc368248348308308L,0x4d96584514516453L,0x36590d94d4659619L,0x546590d90d969964L,
0x920d20c20c20541L,0x961145145914f0daL,0xe89d351965865365L,0x9e89e89e99e7a279L,
0xb203243081821827L,0x422492c718b28920L,0x3872c35cb28b0d72L,0x32cb2972c30d72cbL,
0xc90c204e1c75cb0cL,0x24b1c62ca2482c80L,0xb0ea2e42c3a89089L,0xa4966a289669a31cL,
0x8175e7a59a8a269L,0x718b28920b203243L,0x175976584114105cL,0x5c36572d74ce5d96L,
0xe1ce5d70d92d7297L,0xca2482c80c90c204L,0x5d96104504171c62L,0x79669533976585d6L,
0x659689e6964965a2L,0x24510510308175e7L,0xe2420841451031c2L,0x453851c35c338714L,
0xc30c31c51c51451L,0x41440c20451450c7L,0x821051440c708914L,0x1470ea0df1c58c90L,
0x8a1e85e861861863L,0x30818618687a8a2L,0x5053c36824853c51L,0x96194ce51341144fL,
0x943855141544d439L,0x5415464e0d90d96L,0xf0da09214f1440c2L,0x533944d04513d414L,
0x86082181350e6586L,0x18277689e89e981dL,0x8920718510308182L,0x14e2422441c718b2L,
0xe1c73871c35cb287L,0xc70c32cb28e1c514L,0x1c61440c204e1c75L,0x90891071c62ca248L,
0xa31c70ea2e41c58cL,0xa269a475e86175e7L,0x510308175e7a57a8L,0xf38718b28920718L,
0x39961758e5134114L,0x728e38550e1ce4ceL,0xc204e1ce5ce0d92dL,0x1c62ca2481c61440L,
0x85d63944d04503ceL,0x5d86075e75338e65L,0x75e7657689e69647L
};
private final static long[] offsetIncrs5 = new long[] /*3 bits per value */ {
0x3002000000080000L,0x20c060L,0x100000004000000L,0xdb6db6db50603018L,
0xa480000200002db6L,0x1249208841241240L,0x4000010000104120L,0x2492c42092092052L,
0xc30d800096592d9L,0xb01b0c06c36036d8L,0x186c00036c36db0dL,0xad860361b01b6c06L,
0x360001b75b6dd6ddL,0xc412311c0db6030cL,0xdb0db6e36e06L,0x9188e06db01861bL,
0x6dd6db71b72b62L,0x4024024900800920L,0x20824900904920c2L,0x1201248040049000L,
0x5524ad4aa4906120L,0x4092402002480015L,0x9252251248409409L,0x4920100124000820L,
0x29128924204a04a0L,0x900830d200055549L,0x934930c24c24034L,0x418690002682493L,
0x9a49861261201a48L,0xc348001355249d4L,0x24c40930940d2402L,0x1a40009a0924e24dL,
0x6204984a06920106L,0x92494d5492712692L,0x4924924924924924L,0x2492492492492492L,
0xc0000010000000L,0x40000060061L,0x6000000800000000L,0xdb6ab6db6b003080L,
0x80040000002db6L,0x1148241249245240L,0x4002000000104904L,0xa4b2592492292000L,
0xd80c00009649658L,0x80db6d86db0c001bL,0xc06000036db01b6dL,0x6db6c36d86000d86L,
0x300001b6ddadb6edL,0xe37236e40006c360L,0xdb6c46db6236L,0xb91b72000361b018L,
0x6db7636dbb1b71L,0x6124800120100820L,0x2482000492492490L,0x9240009008041000L,
0x555b6a4924924830L,0x2000480402080012L,0x8411249249252449L,0x24020104000928L,
0x5892492492922490L,0x120d808200049456L,0x6924924906da4800L,0x6c041000249a01bL,
0x924924836d240009L,0x6020800124d5adb4L,0x2492523692000483L,0x104000926846da49L,
0x49291b49000241b0L,0x92494935636d2492L,0x4924924924924924L,0x2492492492492492L,
0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,
0x4924924924924924L,0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,
0x2492492492492492L,0x9249249249249249L,0x4924924924924924L,0x2492492492492492L,
@ -211,53 +211,53 @@ class Lev2TParametricDescription extends ParametricDescription {
// state map
// 0 -> [(0, 0)]
// 1 -> [(0, 2)]
// 2 -> [(0, 1)]
// 1 -> [(0, 1)]
// 2 -> [(0, 2)]
// 3 -> [(0, 1), (1, 1)]
// 4 -> [(0, 2), (1, 2)]
// 5 -> [t(0, 2), (0, 2), (1, 2), (2, 2)]
// 6 -> [(0, 2), (2, 1)]
// 7 -> [(0, 1), (2, 2)]
// 8 -> [(0, 2), (2, 2)]
// 9 -> [(0, 1), (1, 1), (2, 1)]
// 10 -> [(0, 2), (1, 2), (2, 2)]
// 11 -> [(0, 1), (2, 1)]
// 12 -> [t(0, 1), (0, 1), (1, 1), (2, 1)]
// 5 -> [(0, 1), (1, 1), (2, 1)]
// 6 -> [(0, 2), (1, 2), (2, 2)]
// 7 -> [(0, 1), (2, 1)]
// 8 -> [(0, 1), (2, 2)]
// 9 -> [(0, 2), (2, 1)]
// 10 -> [(0, 2), (2, 2)]
// 11 -> [t(0, 1), (0, 1), (1, 1), (2, 1)]
// 12 -> [t(0, 2), (0, 2), (1, 2), (2, 2)]
// 13 -> [(0, 2), (1, 2), (2, 2), (3, 2)]
// 14 -> [t(0, 2), (0, 2), (1, 2), (2, 2), (3, 2)]
// 15 -> [(0, 2), t(1, 2), (1, 2), (2, 2), (3, 2)]
// 16 -> [(0, 2), (2, 1), (3, 1)]
// 14 -> [(0, 1), (1, 1), (3, 2)]
// 15 -> [(0, 1), (2, 2), (3, 2)]
// 16 -> [(0, 1), (3, 2)]
// 17 -> [(0, 1), t(1, 2), (2, 2), (3, 2)]
// 18 -> [(0, 2), (3, 2)]
// 19 -> [(0, 2), (1, 2), t(1, 2), (2, 2), (3, 2)]
// 20 -> [t(0, 2), (0, 2), (1, 2), (3, 1)]
// 21 -> [(0, 1), (1, 1), (3, 2)]
// 18 -> [(0, 2), (1, 2), (3, 1)]
// 19 -> [(0, 2), (1, 2), (3, 2)]
// 20 -> [(0, 2), (1, 2), t(1, 2), (2, 2), (3, 2)]
// 21 -> [(0, 2), (2, 1), (3, 1)]
// 22 -> [(0, 2), (2, 2), (3, 2)]
// 23 -> [(0, 2), (1, 2), (3, 1)]
// 24 -> [(0, 2), (1, 2), (3, 2)]
// 25 -> [(0, 1), (2, 2), (3, 2)]
// 26 -> [(0, 2), (3, 1)]
// 27 -> [(0, 1), (3, 2)]
// 28 -> [(0, 2), (2, 1), (4, 2)]
// 29 -> [(0, 2), t(1, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 30 -> [(0, 2), (1, 2), (4, 2)]
// 23 -> [(0, 2), (3, 1)]
// 24 -> [(0, 2), (3, 2)]
// 25 -> [(0, 2), t(1, 2), (1, 2), (2, 2), (3, 2)]
// 26 -> [t(0, 2), (0, 2), (1, 2), (2, 2), (3, 2)]
// 27 -> [t(0, 2), (0, 2), (1, 2), (3, 1)]
// 28 -> [(0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 29 -> [(0, 2), (1, 2), (2, 2), (4, 2)]
// 30 -> [(0, 2), (1, 2), (2, 2), t(2, 2), (3, 2), (4, 2)]
// 31 -> [(0, 2), (1, 2), (3, 2), (4, 2)]
// 32 -> [(0, 2), (2, 2), (3, 2), (4, 2)]
// 33 -> [(0, 2), (1, 2), t(2, 2), (2, 2), (3, 2), (4, 2)]
// 34 -> [(0, 2), (1, 2), (2, 2), t(2, 2), (3, 2), (4, 2)]
// 35 -> [(0, 2), (3, 2), (4, 2)]
// 36 -> [(0, 2), t(2, 2), (2, 2), (3, 2), (4, 2)]
// 37 -> [t(0, 2), (0, 2), (1, 2), (2, 2), (4, 2)]
// 38 -> [(0, 2), (1, 2), (2, 2), (4, 2)]
// 39 -> [t(0, 2), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 40 -> [(0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 41 -> [(0, 2), (4, 2)]
// 42 -> [t(0, 2), (0, 2), (1, 2), (2, 2), t(2, 2), (3, 2), (4, 2)]
// 43 -> [(0, 2), (2, 2), (4, 2)]
// 44 -> [(0, 2), (1, 2), t(1, 2), (2, 2), (3, 2), (4, 2)]
// 32 -> [(0, 2), (1, 2), (4, 2)]
// 33 -> [(0, 2), (1, 2), t(1, 2), (2, 2), (3, 2), (4, 2)]
// 34 -> [(0, 2), (1, 2), t(2, 2), (2, 2), (3, 2), (4, 2)]
// 35 -> [(0, 2), (2, 1), (4, 2)]
// 36 -> [(0, 2), (2, 2), (3, 2), (4, 2)]
// 37 -> [(0, 2), (2, 2), (4, 2)]
// 38 -> [(0, 2), (3, 2), (4, 2)]
// 39 -> [(0, 2), (4, 2)]
// 40 -> [(0, 2), t(1, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 41 -> [(0, 2), t(2, 2), (2, 2), (3, 2), (4, 2)]
// 42 -> [t(0, 2), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
// 43 -> [t(0, 2), (0, 2), (1, 2), (2, 2), (4, 2)]
// 44 -> [t(0, 2), (0, 2), (1, 2), (2, 2), t(2, 2), (3, 2), (4, 2)]
public Lev2TParametricDescription(int w) {
super(w, 2, new int[] {0,2,1,0,1,0,-1,0,0,-1,0,-1,-1,-1,-1,-1,-2,-1,-1,-1,-2,-1,-1,-2,-1,-1,-2,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2});
super(w, 2, new int[] {0,1,2,0,1,-1,0,-1,0,-1,0,-1,0,-1,-1,-1,-1,-1,-2,-1,-1,-2,-1,-2,-1,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2});
}
}

View File

@ -42,7 +42,7 @@ class LineOutput:
self._indent = self._indent[:-2]
if indent != 0:
indent0 = ' ' * (len(self._indent) / 2 + indent)
indent0 = ' ' * (len(self._indent) // 2 + indent)
else:
indent0 = self._indent
@ -92,11 +92,11 @@ def charVarNumber(charVar):
def main():
if len(sys.argv) != 4:
print
print 'Usage: python -u %s N <True/False> path_to_moman_dir' % sys.argv[0]
print
print 'NOTE: the resulting .java file is created in the current working dir!'
print
print()
print('Usage: python -u %s N <True/False> path_to_moman_dir' % sys.argv[0])
print()
print('NOTE: the resulting .java file is created in the current working dir!')
print()
sys.exit(1)
n = int(sys.argv[1])
@ -184,7 +184,7 @@ def main():
if i != 0 and MODE == 'switch':
w('switch(vector) {')
l = map.items()
l = list(map.items())
l.sort()
numCasesPerVector = None
@ -203,7 +203,8 @@ def main():
w('case %s: // <%s>' % (charVarNumber(charVar), ','.join([str(x) for x in charVar])))
w.indent()
l = states.items()
l = list(states.items())
l.sort()
byFromState = {}
@ -307,12 +308,12 @@ def main():
l, nbits = pack(toStateArray)
subs.append(('NBITSSTATES%d' % i, str(nbits)))
w(' private final static long[] toStates%d = new long[] /*%d bits per value */ %s;' % \
(i, nbits, renderList([hex(long(x)) for x in l])))
(i, nbits, renderList([(hex(int(x)) + "L") for x in l])))
l, nbits = pack(toOffsetIncrsArray)
subs.append(('NBITSOFFSET%d' % i, str(nbits)))
w(' private final static long[] offsetIncrs%d = new long[] /*%d bits per value */ %s;' % \
(i, nbits, renderList([hex(long(x)) for x in l])))
(i, nbits, renderList([(hex(int(x)) + "L") for x in l])))
else:
w(' private final static int[] toStates%d = new int[] %s;' % \
(i, renderList([str(x) for x in toStateArray])))
@ -325,7 +326,7 @@ def main():
w('// state map')
sum = 0
minErrors = []
for i in xrange(len(stateMap2) - 1):
for i in range(len(stateMap2) - 1):
w('// %s -> %s' % (i, stateMap2[i]))
# we replace t-notation as it's not relevant here
st = stateMap2[i].replace('t', '')
@ -416,14 +417,14 @@ def main():
for sub, repl in subs:
s = s.replace(sub, repl)
open(fileOut, 'wb').write(s)
open(fileOut, 'w').write(s)
print 'Wrote %s [%d lines; %.1f KB]' % \
(fileOut, len(w.l), os.path.getsize(fileOut) / 1024.)
print('Wrote %s [%d lines; %.1f KB]' % \
(fileOut, len(w.l), os.path.getsize(fileOut) / 1024.))
def renderList(l):
lx = [' ']
for i in xrange(len(l)):
for i in range(len(l)):
if i > 0:
lx.append(',')
if i % 4 == 0:
@ -433,7 +434,7 @@ def renderList(l):
MASKS = []
v = 2
for i in xrange(63):
for i in range(63):
MASKS.append(v - 1)
v *= 2
@ -446,7 +447,7 @@ def pack(l):
pendingValue = 0
packed = []
for i in xrange(len(l)):
for i in range(len(l)):
v = l[i]
if pendingValue > 0:
bitsUsed = math.ceil(math.log(pendingValue) / math.log(2.0))
@ -495,8 +496,8 @@ def unpack(data, index, bitsPerValue):
if __name__ == '__main__':
if not __debug__:
print
print 'ERROR: please run without -O'
print
print()
print('ERROR: please run without -O')
print()
sys.exit(1)
main()

View File

@ -122,10 +122,10 @@ def get_type(bits):
def block_value_count(bpv, bits=64):
blocks = bpv
values = blocks * bits / bpv
values = blocks * bits // bpv
while blocks % 2 == 0 and values % 2 == 0:
blocks /= 2
values /= 2
blocks //= 2
values //= 2
assert values * bpv == bits * blocks, "%d values, %d blocks, %d bits per value" % (values, blocks, bpv)
return (blocks, values)
@ -181,8 +181,8 @@ def p64_decode(bpv, f, bits):
f.write(" values[valuesOffset++] = %s(block >>> shift) & %d%s;\n" % (cast_start, mask, cast_end))
f.write(" }\n")
else:
for i in xrange(0, values):
block_offset = i * bpv / 64
for i in range(0, values):
block_offset = i * bpv // 64
bit_offset = (i * bpv) % 64
if bit_offset == 0:
# start of block
@ -214,7 +214,7 @@ def p64_decode(bpv, f, bits):
if is_power_of_two(bpv) and bpv < 8:
f.write(" for (int j = 0; j < iterations; ++j) {\n")
f.write(" final byte block = blocks[blocksOffset++];\n")
for shift in xrange(8 - bpv, 0, -bpv):
for shift in range(8 - bpv, 0, -bpv):
f.write(" values[valuesOffset++] = (block >>> %d) & %d;\n" % (shift, mask))
f.write(" values[valuesOffset++] = block & %d;\n" % mask)
f.write(" }\n")
@ -226,21 +226,21 @@ def p64_decode(bpv, f, bits):
f.write(" for (int j = 0; j < iterations; ++j) {\n")
m = bits <= 32 and "0xFF" or "0xFFL"
f.write(" values[valuesOffset++] =")
for i in xrange(bpv / 8 - 1):
for i in range(bpv // 8 - 1):
f.write(" ((blocks[blocksOffset++] & %s) << %d) |" % (m, bpv - 8))
f.write(" (blocks[blocksOffset++] & %s);\n" % m)
f.write(" }\n")
else:
f.write(" for (int i = 0; i < iterations; ++i) {\n")
for i in xrange(0, byte_values):
byte_start = i * bpv / 8
for i in range(0, byte_values):
byte_start = i * bpv // 8
bit_start = (i * bpv) % 8
byte_end = ((i + 1) * bpv - 1) / 8
byte_end = ((i + 1) * bpv - 1) // 8
bit_end = ((i + 1) * bpv - 1) % 8
shift = lambda b: 8 * (byte_end - b - 1) + 1 + bit_end
if bit_start == 0:
f.write(" final %s byte%d = blocks[blocksOffset++] & 0xFF;\n" % (typ, byte_start))
for b in xrange(byte_start + 1, byte_end + 1):
for b in range(byte_start + 1, byte_end + 1):
f.write(" final %s byte%d = blocks[blocksOffset++] & 0xFF;\n" % (typ, b))
f.write(" values[valuesOffset++] =")
if byte_start == byte_end:
@ -259,7 +259,7 @@ def p64_decode(bpv, f, bits):
f.write(" (byte%d << %d)" % (byte_start, shift(byte_start)))
else:
f.write(" ((byte%d & %d) << %d)" % (byte_start, 2 ** (8 - bit_start) - 1, shift(byte_start)))
for b in xrange(byte_start + 1, byte_end):
for b in range(byte_start + 1, byte_end):
f.write(" | (byte%d << %d)" % (b, shift(b)))
if bit_end == 7:
f.write(" | byte%d" % byte_end)
@ -280,7 +280,7 @@ if __name__ == '__main__':
f.write('abstract class BulkOperation implements PackedInts.Decoder, PackedInts.Encoder {\n')
f.write(' private static final BulkOperation[] packedBulkOps = new BulkOperation[] {\n')
for bpv in xrange(1, 65):
for bpv in range(1, 65):
if bpv > MAX_SPECIALIZED_BITS_PER_VALUE:
f.write(' new BulkOperationPacked(%d),\n' % bpv)
continue
@ -304,7 +304,7 @@ if __name__ == '__main__':
f.write(' // NOTE: this is sparse (some entries are null):\n')
f.write(' private static final BulkOperation[] packedSingleBlockBulkOps = new BulkOperation[] {\n')
for bpv in xrange(1, max(PACKED_64_SINGLE_BLOCK_BPV) + 1):
for bpv in range(1, max(PACKED_64_SINGLE_BLOCK_BPV) + 1):
if bpv in PACKED_64_SINGLE_BLOCK_BPV:
f.write(' new BulkOperationPackedSingleBlock(%d),\n' % bpv)
else: