+++ /dev/null
-(***********************************************************************
-
- 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.
-***********************************************************************)
-