]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_cryptkit/lib/CurveParamDocs/curverecords.nb
Security-57031.1.35.tar.gz
[apple/security.git] / libsecurity_cryptkit / lib / CurveParamDocs / curverecords.nb
diff --git a/libsecurity_cryptkit/lib/CurveParamDocs/curverecords.nb b/libsecurity_cryptkit/lib/CurveParamDocs/curverecords.nb
deleted file mode 100644 (file)
index f66f4f8..0000000
+++ /dev/null
@@ -1,898 +0,0 @@
-(***********************************************************************
-
-                    Mathematica-Compatible Notebook
-
-This notebook can be used on any computer system with Mathematica 3.0,
-MathReader 3.0, or any compatible application. The data for the notebook 
-starts with the line of stars above.
-
-To get the notebook into a Mathematica-compatible application, do one of 
-the following:
-
-* Save the data starting with the line of stars above into a file
-  with a name ending in .nb, then open the file inside the application;
-
-* Copy the data starting with the line of stars above to the
-  clipboard, then use the Paste menu command inside the application.
-
-Data for notebooks contains only printable 7-bit ASCII and can be
-sent directly in email or through ftp in text mode.  Newlines can be
-CR, LF or CRLF (Unix, Macintosh or MS-DOS style).
-
-NOTE: If you modify the data for this notebook not in a Mathematica-
-compatible application, you must delete the line below containing the 
-word CacheID, otherwise Mathematica-compatible applications may try to 
-use invalid cache data.
-
-For more information on notebooks and Mathematica-compatible 
-applications, contact Wolfram Research:
-  web: http://www.wolfram.com
-  email: info@wolfram.com
-  phone: +1-217-398-0700 (U.S.)
-
-Notebook reader applications are available free of charge from 
-Wolfram Research.
-***********************************************************************)
-
-(*CacheID: 232*)
-
-
-(*NotebookFileLineBreakTest
-NotebookFileLineBreakTest*)
-(*NotebookOptionsPosition[     18376,        710]*)
-(*NotebookOutlinePosition[     19227,        740]*)
-(*  CellTagsIndexPosition[     19183,        736]*)
-(*WindowFrame->Normal*)
-
-
-
-Notebook[{
-Cell["\<\
-(* curverecords
-
-   Recorded data for Apple ECC curves.
-   
-   R. Crandall
-   3 Apr 2001
-   
-
- *)
-
-pointQ[x_] := (JacobiSymbol[x^3 + c x^2 + a x + b, p] > -1);
-
-(* Next, binary expansion for very old M'ca versions,
-   otherwise use IntegerDigits[.,2]. *)
-bitList[k_] := Block[{li = {}, j = k},
-\tWhile[j > 0,
-\t    li = Append[li, Mod[j,2]];
-\t    j = Floor[j/2];
-\t];
-\tReturn[Reverse[li]];
-\t];
-\t
-ellinv[n_] := PowerMod[n,-1,p];
-(* Next, obtain actual x,y coords via normalization:
-   {x,y,z} := {X/Z^2, Y/Z^3, 1}. *)
-normalize[pt_] := Block[{z,z2,z3},
-\t\tIf[pt[[3]] == 0, Return[pt]];
-\t\tz = ellinv[pt[[3]]];
-\t\tz2 = Mod[z^2,p];
-\t\tz3 = Mod[z z2,p];
-\t\tReturn[{Mod[pt[[1]] z2, p], Mod[pt[[2]] z3, p], 1}];
-\t\t];
-
-ellneg[pt_] := Mod[pt * {1,-1,1}, p];
-ellsub[pt1_, pt2_] := elladd[pt1, ellneg[pt2]];
-elldouble[pt_] := Block[{x,y,z,m,y2,s},
-\tx = pt[[1]]; y = pt[[2]]; z = pt[[3]];
-\tIf[(y==0) || (z==0), Return[{1,1,0}]];
-\tm = Mod[3 x^2 + a Mod[Mod[z^2,p]^2,p],p];
-\tz = Mod[2 y z, p];
-\ty2 = Mod[y^2,p];
-\ts = Mod[4 x y2,p]; 
-\tx = Mod[m^2 - 2s,p];
-\ty = Mod[m(s - x) - 8 y2^2,p];
-\tReturn[{x,y,z}];
-];
-
-elladd[pt0_, pt1_] := Block[
-\t{x0,y0,z0,x1,y1,z1,
-\tt1,t2,t3,t4,t5,t6,t7},
-\tx0 = pt0[[1]]; y0 = pt0[[2]]; z0 = pt0[[3]];
-\tx1 = pt1[[1]]; y1 = pt1[[2]]; z1 = pt1[[3]];
-\tIf[z0 == 0, Return[pt1]];
-\tIf[z1 == 0, Return[pt0]];
-
-\tt1 = x0;
-\tt2 = y0;
-\tt3 = z0;
-\tt4 = x1;
-\tt5 = y1;
-\tIf[(z1 != 1),
-\t\tt6 = z1;
-\t\tt7 = Mod[t6^2, p];
-\t\tt1 = Mod[t1 t7, p];
-\t\tt7 = Mod[t6 t7, p];
-\t\tt2 = Mod[t2 t7, p];
-\t];
-\tt7 = Mod[t3^2, p];
-\tt4 = Mod[t4 t7, p];
-\tt7 = Mod[t3 t7, p];
-\tt5 = Mod[t5 t7, p];
-\tt4 = Mod[t1-t4, p];
-\tt5 = Mod[t2 - t5, p];
-\tIf[t4 == 0, If[t5 == 0,
-\t\t\t\t    Return[elldouble[pt0]],
-\t   \t\t\t\tReturn[{1,1,0}]
-\t   \t\t\t]
-\t];
-\tt1 = Mod[2t1 - t4,p];
-\tt2 = Mod[2t2 - t5, p];
-\tIf[z1 != 1, t3 = Mod[t3 t6, p]];
-\tt3 = Mod[t3 t4, p];
-\tt7 = Mod[t4^2, p];
-\tt4 = Mod[t4 t7, p];
-\tt7 = Mod[t1 t7, p];
-\tt1 = Mod[t5^2, p];
-\tt1 = Mod[t1-t7, p];
-\tt7 = Mod[t7 - 2t1, p];
-\tt5 = Mod[t5 t7, p];
-\tt4 = Mod[t2 t4, p];
-\tt2 = Mod[t5-t4, p];
-\tIf[EvenQ[t2], t2 = t2/2, t2 = (p+t2)/2];
-\tReturn[{t1, t2, t3}];
-];
-\t\t
-(* Next, elliptic-multiply a normalized pt by k. *)
-elliptic[pt_, k_] := Block[{pt2, hh, kk, hb, kb, lenh, lenk},
-\tIf[k==0, Return[{1,1,0}]];
-\thh = Reverse[bitList[3k]];
-\tkk = Reverse[bitList[k]];
-\tpt2 = pt;
-\tlenh = Length[hh];
-\tlenk = Length[kk];
-\tDo[
-\t\tpt2 = elldouble[pt2];
-\t\thb = hh[[b]];
-\t\tIf[b <= lenk, kb = kk[[b]], kb = 0];
-\t\tIf[{hb,kb} == {1,0},
-\t\t\tpt2 = elladd[pt2, pt],
-\t\t\tIf[{hb, kb} == {0,1},
-\t\t\tpt2 = ellsub[pt2, pt]]
-\t\t]
-\t   ,{b, lenh-1, 2,-1}
-\t ];
-\tReturn[pt2];
-];
-
-(* Next, provide point-finding functions. *)
-
-(* Next, perform (a + b w)^n (mod p), where pair = {a,b}, w2 = w^2. *)
-pow[pair_, w2_, n_, p_] := Block[{bitlist, z},
-    bitlist = bitList[n];
-    z = pair;
-\tDo[\t
-\t   zi = Mod[z[[2]]^2,p];
-\t   z = {Mod[z[[1]]^2 + w2 zi, p], Mod[2 z[[1]] z[[2]], p]};   
-\t   If[bitlist[[q]] == 1,
-\t       zi = Mod[pair[[2]] z[[2]], p];
-\t   \t   z = {Mod[pair[[1]] z[[1]] + w2 zi, p],
-\t   \t         Mod[pair[[1]] z[[2]] + pair[[2]] z[[1]], p]};
-\t   ],
-\t   {q,2,Length[bitlist]}
-    ];
-    Return[z]
-];
-
-
-sqrt[x_, p_] := Module[{t, b, w2},
-    If[Mod[x,p] == 0, Return[0]];
-\tIf[Mod[p,4] == 3, Return[PowerMod[x, (p+1)/4, p]]];
-\tIf[Mod[p,8] == 5,
-\t\tb = PowerMod[x, (p-1)/4, p];
-\t\tIf[b==1, Return[PowerMod[x, (p+3)/8, p]],
-\t\t\tReturn[Mod[2x PowerMod[4x, (p-5)/8,p],p]]
-\t\t]
-\t];
-\tt = 2;
-    While[True,
-      w2 = Mod[t^2 - x, p];
-      If[JacobiSymbol[w2,p] == -1, Break[]];
-      ++t
-    ];
-    (* Next, raise (t + Sqrt[w2])^((p+1)/2). *)
-    t = pow[{t,1},w2, (p+1)/2, p];
-    Return[t[[1]]];
-    ];
-
-findpoint[start_] := Block[{x = start, y, s},
-\tWhile[True,
-\t   s = Mod[x(Mod[x^2+a,p]) + b, p];
-\t   y = sqrt[s, p];
-\t   If[Mod[y^2, p] == s, Break[]];
-\t   ++x;
-\t];
-\tReturn[{x, y, 1}]
-];
-
-report[a_] := Module[{ia = IntegerDigits[a,65536]},    
-      Prepend[Reverse[ia], Length[ia]]
-      ];
-    \
-\>", "Input",
-  AspectRatioFixed->True],
-
-Cell[CellGroupData[{
-
-Cell["\<\
-
-
-
-report[a_] := Module[{ia = IntegerDigits[a,65536]},    
-      Prepend[Reverse[ia], Length[ia]]
-      ];
-    
-    
-(* Case of Weierstrass/feemod curve. *)
-p = 2^127 + 57675
-report[p]
-r = 512000; s = 512001;
-
-a = Mod[-3 r s^3, p]
-report[a]
-b = Mod[-2 r s^5, p]
-report[b]
-pt = findpoint[3];
-pt
-plusOrd = 170141183460469231756943134065055014407
-report[plusOrd]
-PrineQ[plusOrd]
-minusOrd = 170141183460469231706431473366713312401
-report[minusOrd]
-PrimeQ[minusOrd]
-elliptic[pt, plusOrd]
-elliptic[pt, minusOrd]\
-\>", "Input",
-  AspectRatioFixed->True],
-
-Cell[BoxData[
-    \(170141183460469025572049133804586627403\)], "Output"],
-
-Cell[BoxData[
-    \({8, 29003, 44777, 29962, 4169, 54360, 65535, 65535, 32767}\)], "Output"],
-
-Cell[BoxData[
-    \(170105154311605172483148226534443139403\)], "Output"],
-
-Cell[BoxData[
-    \({8, 16715, 42481, 16221, 60523, 56573, 13644, 4000, 32761}\)], "Output"],
-
-Cell[BoxData[
-    \(Reverse::"normal" \( : \ \) 
-      "Nonatomic expression expected at position \!\(1\) in \
-\!\(Reverse[ib]\)."\)], "Message"],
-
-Cell[BoxData[
-    \(Join::"heads" \( : \ \) 
-      "Heads \!\(List\) and \!\(Reverse\) at positions \!\(1\) and \!\(2\) \
-are expected to be the same."\)], "Message"],
-
-Cell[BoxData[
-    \(Join[{0}, Reverse[ib]]\)], "Output"],
-
-Cell[BoxData[
-    \({6, 30690820274365139284340271178980469693, 1}\)], "Output"],
-
-Cell[BoxData[
-    \({1, 1, 0}\)], "Output"],
-
-Cell[BoxData[
-    \({29855379595419734109449938959593549451, 
-      71894799143021275114012027736812077762, 
-      78629090074833058028405436736324079039}\)], "Output"],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[{
-    \( (*\ Case\ of\ Weierstrass/gen . \ mod\ \(curve . \)\ *) \n
-    p\  = \ 1654338658923174831024422729553880293604080853451; \n
-    Mod[p, 4]\), 
-    \(Length[IntegerDigits[p, 2]]\), 
-    \(report[p]\), 
-    \(PrimeQ[p]\n\n\), 
-    \(a\  = \ \(-152\); \nreport[a]\), 
-    \(b\  = \ Mod[722, \ p]\), 
-    \(report[b]\), 
-    \(ptplus\  = \ 
-      findpoint[1245904487553815885170631576005220733978383542270]\), 
-    \(ptminus\  = \ 
-      findpoint[1173563507729187954550227059395955904200719019884]\), 
-    \(plusOrd\  = \ \ 1654338658923174831024425147405519522862430265804; \n
-    report[plusOrd]\), 
-    \(PrimeQ[plusOrd]\), 
-    \(minusOrd\  = \ 2  p + 2\  - \ plusOrd\), 
-    \(report[minusOrd]\), 
-    \(PrimeQ[minusOrd]\n\), 
-    \(pt2\  = \ 
-      elliptic[ptplus, \ plusOrd/\((2^2\ *\ 23\ *\ 359\ *\ 479\ *\ 102107)\)]
-        \), 
-    \(pt3\  = \ elliptic[ptminus, \ minusOrd/\((2^2\ *\ 5^2\ *\ 17^2)\)]\)}], 
-  "Input"],
-
-Cell[BoxData[
-    \(3\)], "Output"],
-
-Cell[BoxData[
-    \(161\)], "Output"],
-
-Cell[BoxData[
-    \({11, 41419, 58349, 36408, 14563, 25486, 9098, 29127, 50972, 7281, 8647, 
-      1}\)], "Output"],
-
-Cell[BoxData[
-    \(True\)], "Output"],
-
-Cell[BoxData[
-    \({1, 152}\)], "Output"],
-
-Cell[BoxData[
-    \(722\)], "Output"],
-
-Cell[BoxData[
-    \({1, 722}\)], "Output"],
-
-Cell[BoxData[
-    \({1245904487553815885170631576005220733978383542270, 
-      560361014661268580786436670038204012763093444403, 1}\)], "Output"],
-
-Cell[BoxData[
-    \({1173563507729187954550227059395955904200719019885, 
-      1175039848591896005104837959278049495835875105211, 1}\)], "Output"],
-
-Cell[BoxData[
-    \({11, 41420, 58349, 36408, 14563, 25486, 9100, 29127, 50972, 7281, 8647, 
-      1}\)], "Output"],
-
-Cell[BoxData[
-    \(False\)], "Output"],
-
-Cell[BoxData[
-    \(1654338658923174831024420311702241064345731441100\)], "Output"],
-
-Cell[BoxData[
-    \({11, 41420, 58349, 36408, 14563, 25486, 9096, 29127, 50972, 7281, 8647, 
-      1}\)], "Output"],
-
-Cell[BoxData[
-    \(False\)], "Output"],
-
-Cell[BoxData[
-    \({1, 1, 0}\)], "Output"],
-
-Cell[BoxData[
-    \({1190583420013022954017374261618382173651469909929, 
-      629194203259568943908951973353992532594049316627, 
-      1243063853191133727091858197899695654928311311960}\)], "Output"]
-}, Open  ]]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell["\<\
-
-    
-(* Case of Weierstrass/feemod curve. *)
-p = 2^160 + 5875
-report[p]
-PrimeQ[p]
-r = 512; s = 513;
-
-a = Mod[-3 r s^3, p]
-report[a]
-b = Mod[2 r s^5, p]
-report[b]
-pt = findpoint[3];
-pt
-plusOrd =  1461501637330902918203687223801810245920805144027
-report[plusOrd]
-PrimeQ[plusOrd]
-minusOrd = 1461501637330902918203682441630755793391059953677
-report[minusOrd]
-PrimeQ[minusOrd]
-
-elliptic[pt, plusOrd]
-elliptic[pt, minusOrd]\
-\>", "Input",
-  AspectRatioFixed->True],
-
-Cell[BoxData[
-    \(1461501637330902918203684832716283019655932548851\)], "Output"],
-
-Cell[BoxData[
-    \({11, 5875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}\)], "Output"],
-
-Cell[BoxData[
-    \(True\)], "Output"],
-
-Cell[BoxData[
-    \(1461501637330902918203684832716283019448563798259\)], "Output"],
-
-Cell[BoxData[
-    \({11, 4339, 47068, 65487, 65535, 65535, 65535, 65535, 65535, 65535, 
-      65535, 0}\)], "Output"],
-
-Cell[BoxData[
-    \(36382017816364032\)], "Output"],
-
-Cell[BoxData[
-    \({4, 1024, 41000, 16704, 129}\)], "Output"],
-
-Cell[BoxData[
-    \({7, 1141381147330837701163756056508811445797829159301, 1}\)], "Output"],
-
-Cell[BoxData[
-    \(1461501637330902918203687223801810245920805144027\)], "Output"],
-
-Cell[BoxData[
-    \({11, 50651, 30352, 49719, 403, 64085, 1, 0, 0, 0, 0, 1}\)], "Output"],
-
-Cell[BoxData[
-    \(True\)], "Output"],
-
-Cell[BoxData[
-    \(1461501637330902918203682441630755793391059953677\)], "Output"],
-
-Cell[BoxData[
-    \({11, 26637, 35183, 15816, 65132, 1450, 65534, 65535, 65535, 65535, 
-      65535, 0}\)], "Output"],
-
-Cell[BoxData[
-    \(True\)], "Output"],
-
-Cell[BoxData[
-    \({1, 1, 0}\)], "Output"],
-
-Cell[BoxData[
-    \({626678646813931825585362114548610779332932369721, 
-      425645027836716936906396416648647850487040622280, 
-      374678203163702432662589149043052098374578486466}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[{
-    \( (*\ Case\ of\ NIST\ P - 192. \ *) \n
-    p\  = \ 6277101735386680763835789423207666416083908700390324961279; \n
-    Mod[p, 4]\), 
-    \(Length[IntegerDigits[p, 2]]\), 
-    \(report[p]\), 
-    \(PrimeQ[p]\n\n\), 
-    \(a\  = \ \(-3\); \nreport[a]\), 
-    \(b\  = \ 
-      Mod[\(-2455155546008943817740293915197451784769108058161191238065\), \ 
-        p]\), 
-    \(report[b]\), 
-    \(pt\  = \ findpoint[3]; \npt\), 
-    \(plusOrd\  = \ \ 
-      6277101735386680763835789423176059013767194773182842284081\), 
-    \(report[plusOrd]\), 
-    \(PrimeQ[plusOrd]\), 
-    \(minusOrd\  = \ 2  p + 2\  - \ plusOrd\), 
-    \(report[minusOrd]\), 
-    \(PrimeQ[minusOrd]\), 
-    \(elliptic[pt, \ plusOrd]\), 
-    \(pt2\  = \ elliptic[pt, \ 23]\), 
-    \(pt\  = \ elliptic[pt2, \ minusOrd/23]\), 
-    \(report[minusOrd/23]\)}], "Input"],
-
-Cell[BoxData[
-    \(3\)], "Output"],
-
-Cell[BoxData[
-    \(192\)], "Output"],
-
-Cell[BoxData[
-    \({12, 65535, 65535, 65535, 65535, 65534, 65535, 65535, 65535, 65535, 
-      65535, 65535, 65535}\)], "Output"],
-
-Cell[BoxData[
-    \(True\)], "Output"],
-
-Cell[BoxData[
-    \({1, 3}\)], "Output"],
-
-Cell[BoxData[
-    \(3821946189377736946095495508010214631314800642229133723214\)], "Output"],
-
-Cell[BoxData[
-    \({12, 17998, 16057, 8467, 327, 53173, 36315, 5716, 61528, 32536, 6755, 
-      64230, 39902}\)], "Output"],
-
-Cell[BoxData[
-    \({3, 2573760116079900500718205355717584033158714840310676461950, 1}\)], 
-  "Output"],
-
-Cell[BoxData[
-    \(6277101735386680763835789423176059013767194773182842284081\)], "Output"],
-
-Cell[BoxData[
-    \({12, 10289, 46290, 51633, 5227, 63542, 39390, 65535, 65535, 65535, 
-      65535, 65535, 65535}\)], "Output"],
-
-Cell[BoxData[
-    \(True\)], "Output"],
-
-Cell[BoxData[
-    \(6277101735386680763835789423239273818400622627597807638479\)], "Output"],
-
-Cell[BoxData[
-    \({12, 55247, 19245, 13902, 60308, 1991, 26145, 0, 0, 0, 0, 0, 0}\)], 
-  "Output"],
-
-Cell[BoxData[
-    \(False\)], "Output"],
-
-Cell[BoxData[
-    \({1974979226733528697945860683178722101664119564992975891016, 
-      4098724835649872426757510355842063594543191498480025032993, 
-      6276809135556566751199297417037505266020088100630063387404}\)], "Output"],
-
-Cell[BoxData[
-    \({4331701396234773295967464070295991827703321716502384917379, 
-      6038875199291747318091498070766965234564517946489302751105, 
-      2975197300407214290225034931542769825877023149833302700493}\)], "Output"],
-
-Cell[BoxData[
-    \({1, 1, 0}\)], "Output"],
-
-Cell[BoxData[
-    \({12, 16649, 40728, 9152, 53911, 59923, 9684, 22795, 17096, 45590, 
-      34192, 25644, 2849}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(normalize[pt2]\)], "Input"],
-
-Cell[BoxData[
-    \({572757471182948021179439097275935071491066938838024362853, 
-      1582598775998321197887787208733859332485461160705858323879, 1}\)], 
-  "Output"],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(report[%[\([1]\)]]\)], "Input"],
-
-Cell[BoxData[
-    \({12, 39781, 2122, 19172, 23122, 40686, 43699, 10062, 14682, 25122, 
-      55271, 56820, 5979}\)], "Output"]
-}, Open  ]]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[{
-    \(minusOrd\), 
-    \(plusOrd\)}], "Input"],
-
-Cell[BoxData[
-    \(6277101735386680763835789423239273818400622627597807638479\)], "Output"],
-
-Cell[BoxData[
-    \(6277101735386680763835789423176059013767194773182842284081\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(IntegerDigits[13, 2]\)], "Input"],
-
-Cell[BoxData[
-    \({1, 1, 0, 1}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[{
-    \(minusOrd/23\), 
-    \(\treport[minusOrd/23]\)}], "Input"],
-
-Cell[BoxData[
-    \(272917466755942641905903887966924948626114027286861201673\)], "Output"],
-
-Cell[BoxData[
-    \({12, 16649, 40728, 9152, 53911, 59923, 9684, 22795, 17096, 45590, 
-      34192, 25644, 2849}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(ord\  = \ 1024120625531724089187207582052247831; \n
-    Floor[4^Length[IntegerDigits[plusOrd, \ 2]]/plusOrd]\)], "Input"],
-
-Cell[BoxData[
-    \(5846006549323611672814729766523023173564239767715\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(report[%]\)], "Input"],
-
-Cell[BoxData[
-    \({11, 59555, 9660, 63266, 63920, 5803, 65528, 65535, 65535, 65535, 
-      65535, 3}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(IntegerDigits[
-      6277101735386680763835789423207666416083908700390324961279, 2]\)], 
-  "Input"],
-
-Cell[BoxData[
-    \({1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-      1}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[{
-    \(a\), 
-    \(b\), 
-    \(JacobiSymbol[3^3\  + \ a\ *\ 3\  - \ b, \ p]\)}], "Input"],
-
-Cell[BoxData[
-    \(\(-3\)\)], "Output"],
-
-Cell[BoxData[
-    \(3821946189377736946095495508010214631314800642229133723214\)], "Output"],
-
-Cell[BoxData[
-    \(1\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(minusOrd\)], "Input"],
-
-Cell[BoxData[
-    \(6277101735386680763835789423239273818400622627597807638479\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(o\  = 272917466755942641905903887966924948626114027286861201673; \n
-    Floor[4^Length[IntegerDigits[o, 2]]/o]\)], "Input"],
-
-Cell[BoxData[
-    \(563958359038647099875871705988474052021461054728890671516\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(report[%]\)], "Input"],
-
-Cell[BoxData[
-    \({12, 57756, 63294, 44830, 2517, 2125, 63187, 65535, 65535, 65535, 
-      65535, 65535, 5887}\)], "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-
-Cell[BoxData[
-    \(IntegerDigits[1654338658923174831024422729553880293604080853451, 2]\)], 
-  "Input"],
-
-Cell[BoxData[
-    \({1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 
-      0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 
-      0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 
-      1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 
-      1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 
-      1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 
-      0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1}\)], "Output"]
-}, Open  ]]
-},
-FrontEndVersion->"NeXT 3.0",
-ScreenRectangle->{{0, 957}, {0, 768}},
-WindowToolbars->{},
-CellGrouping->Manual,
-WindowSize->{520, 600},
-WindowMargins->{{Automatic, 44}, {-10, Automatic}},
-PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
-ShowCellLabel->True,
-ShowCellTags->False,
-RenderingOptions->{"ObjectDithering"->True,
-"RasterDithering"->False}
-]
-
-
-(***********************************************************************
-Cached data follows.  If you edit this Notebook file directly, not using
-Mathematica, you must remove the line containing CacheID at the top of 
-the file.  The cache data will then be recreated when you save this file 
-from within Mathematica.
-***********************************************************************)
-
-(*CellTagsOutline
-CellTagsIndex->{}
-*)
-
-(*CellTagsIndex
-CellTagsIndex->{}
-*)
-
-(*NotebookFileOutline
-Notebook[{
-Cell[1709, 49, 4062, 173, 2136, "Input"],
-
-Cell[CellGroupData[{
-Cell[5796, 226, 556, 29, 336, "Input"],
-Cell[6355, 257, 73, 1, 24, "Output"],
-Cell[6431, 260, 92, 1, 24, "Output"],
-Cell[6526, 263, 73, 1, 24, "Output"],
-Cell[6602, 266, 92, 1, 24, "Output"],
-Cell[6697, 269, 145, 3, 33, "Message"],
-Cell[6845, 274, 166, 3, 33, "Message"],
-Cell[7014, 279, 56, 1, 24, "Output"],
-Cell[7073, 282, 80, 1, 24, "Output"],
-Cell[7156, 285, 43, 1, 24, "Output"],
-Cell[7202, 288, 168, 3, 50, "Output"],
-
-Cell[CellGroupData[{
-Cell[7395, 295, 949, 24, 381, "Input"],
-Cell[8347, 321, 35, 1, 24, "Output"],
-Cell[8385, 324, 37, 1, 24, "Output"],
-Cell[8425, 327, 115, 2, 37, "Output"],
-Cell[8543, 331, 38, 1, 24, "Output"],
-Cell[8584, 334, 42, 1, 24, "Output"],
-Cell[8629, 337, 37, 1, 24, "Output"],
-Cell[8669, 340, 42, 1, 24, "Output"],
-Cell[8714, 343, 145, 2, 37, "Output"],
-Cell[8862, 347, 146, 2, 37, "Output"],
-Cell[9011, 351, 115, 2, 37, "Output"],
-Cell[9129, 355, 39, 1, 24, "Output"],
-Cell[9171, 358, 83, 1, 24, "Output"],
-Cell[9257, 361, 115, 2, 37, "Output"],
-Cell[9375, 365, 39, 1, 24, "Output"],
-Cell[9417, 368, 43, 1, 24, "Output"],
-Cell[9463, 371, 200, 3, 50, "Output"]
-}, Open  ]]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[9712, 380, 469, 25, 312, "Input"],
-Cell[10184, 407, 83, 1, 24, "Output"],
-Cell[10270, 410, 74, 1, 24, "Output"],
-Cell[10347, 413, 38, 1, 24, "Output"],
-Cell[10388, 416, 83, 1, 24, "Output"],
-Cell[10474, 419, 117, 2, 37, "Output"],
-Cell[10594, 423, 51, 1, 24, "Output"],
-Cell[10648, 426, 62, 1, 24, "Output"],
-Cell[10713, 429, 91, 1, 24, "Output"],
-Cell[10807, 432, 83, 1, 24, "Output"],
-Cell[10893, 435, 89, 1, 24, "Output"],
-Cell[10985, 438, 38, 1, 24, "Output"],
-Cell[11026, 441, 83, 1, 24, "Output"],
-Cell[11112, 444, 117, 2, 37, "Output"],
-Cell[11232, 448, 38, 1, 24, "Output"],
-Cell[11273, 451, 43, 1, 24, "Output"],
-Cell[11319, 454, 198, 3, 50, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[11554, 462, 844, 23, 420, "Input"],
-Cell[12401, 487, 35, 1, 24, "Output"],
-Cell[12439, 490, 37, 1, 24, "Output"],
-Cell[12479, 493, 129, 2, 37, "Output"],
-Cell[12611, 497, 38, 1, 24, "Output"],
-Cell[12652, 500, 40, 1, 24, "Output"],
-Cell[12695, 503, 92, 1, 24, "Output"],
-Cell[12790, 506, 124, 2, 37, "Output"],
-Cell[12917, 510, 103, 2, 50, "Output"],
-Cell[13023, 514, 92, 1, 24, "Output"],
-Cell[13118, 517, 128, 2, 37, "Output"],
-Cell[13249, 521, 38, 1, 24, "Output"],
-Cell[13290, 524, 92, 1, 24, "Output"],
-Cell[13385, 527, 100, 2, 24, "Output"],
-Cell[13488, 531, 39, 1, 24, "Output"],
-Cell[13530, 534, 228, 3, 89, "Output"],
-Cell[13761, 539, 228, 3, 89, "Output"],
-Cell[13992, 544, 43, 1, 24, "Output"],
-Cell[14038, 547, 126, 2, 37, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[14201, 554, 47, 1, 25, "Input"],
-Cell[14251, 557, 166, 3, 63, "Output"],
-
-Cell[CellGroupData[{
-Cell[14442, 564, 51, 1, 25, "Input"],
-Cell[14496, 567, 127, 2, 37, "Output"]
-}, Open  ]]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[14672, 575, 61, 2, 38, "Input"],
-Cell[14736, 579, 92, 1, 24, "Output"],
-Cell[14831, 582, 92, 1, 24, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[14960, 588, 53, 1, 25, "Input"],
-Cell[15016, 591, 46, 1, 24, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[15099, 597, 78, 2, 38, "Input"],
-Cell[15180, 601, 91, 1, 24, "Output"],
-Cell[15274, 604, 126, 2, 37, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[15437, 611, 141, 2, 38, "Input"],
-Cell[15581, 615, 83, 1, 24, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[15701, 621, 42, 1, 25, "Input"],
-Cell[15746, 624, 116, 2, 37, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[15899, 631, 119, 3, 51, "Input"],
-Cell[16021, 636, 666, 9, 128, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[16724, 650, 103, 3, 51, "Input"],
-Cell[16830, 655, 40, 1, 24, "Output"],
-Cell[16873, 658, 92, 1, 24, "Output"],
-Cell[16968, 661, 35, 1, 24, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[17040, 667, 41, 1, 24, "Input"],
-Cell[17084, 670, 92, 1, 24, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[17213, 676, 143, 2, 64, "Input"],
-Cell[17359, 680, 91, 1, 24, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[17487, 686, 42, 1, 25, "Input"],
-Cell[17532, 689, 126, 2, 37, "Output"]
-}, Open  ]],
-
-Cell[CellGroupData[{
-Cell[17695, 696, 103, 2, 38, "Input"],
-Cell[17801, 700, 559, 7, 115, "Output"]
-}, Open  ]]
-}
-]
-*)
-
-
-
-
-(***********************************************************************
-End of Mathematica Notebook file.
-***********************************************************************)
-