home *** CD-ROM | disk | FTP | other *** search
- Program Roots; { you choose number and root }
-
- uses vlncls;
-
- var dummy : tWordArray; { dummy }
- i, nmbr, root,
- CountMax,StdVLNSize : integer;
- a, b, c, d : pVryLrgNo;
-
- begin
- { wksize is initialized to 100 words of storage }
- { but we make it larger before any memory is allocated }
- Setwksize(400);
- OpenTempRegs;
- { standard subs need temp storage }
- { their max count is wksize }
- { their needed storage is wksize*2+6 }
-
- CountMax := Getwksize; { set count to anyvalue <= wksize }
- StdVLNSize := CountMax*2+6; {these variables need this much storage }
-
- getmem(a, StdVLNSize);
- getmem(b, StdVLNSize);
- getmem(c, StdVLNSize);
- getmem(d, StdVLNSize);
-
- dummy[1] := 1;
- dummy[2] := 5;
- dummy[3] := 0;
- a^.init(3,CountMax,1, @dummy);
- a^.Recount;
-
- dummy[1] := $CA00; { decimal 1,000,000,000 }
- dummy[2] := $3B9A;
- b^.init(2,CountMax,1,@dummy);
- b^.Recount;
-
- c^.init(0,CountMax,1,nil);
- d^.init(0,CountMax,1,nil);
-
- writeln('Max Number size = ',CountMax * 16 div 3,' decimal digits');
-
- repeat
- writeln('--------------------------------');
- write('Enter Number - ');
- Readln(nmbr);
- if nmbr=0 then exit;
- write('Enter Root - ');
- Readln(root);
-
- c^.copy(decPointShift);
- c^.NthPower(root*4);
- c^.MulN(nmbr);
- writeln('Intermediate Number has appx. ',c^.Count * 16 div 3,' decimal digits');
-
- c^.NthRoot(root);
- write('root is - '); c^.writeDecimal(0); writeln;
-
-
- (* Test by multiplying out to get original number
- d^.copy(c);
- for i := 1 to root-1 do
- d^.mulBy(c);
-
- write('answer multiplied out gives - '); d^.writeDecimal(2); writeln;
-
- c^.addN(1);
- d^.copy(c);
- for i := 1 to root-1 do
- d^.mulBy(c);
- write('answer+1 multiplied out gives - '); d^.writeDecimal(2); writeln;
- *)
- until nmbr=0;
-
- writeln('--------------------------------');
-
-
- writeln('Done!');
-
- freemem(a, StdVLNSize); { user variables }
- freemem(b, StdVLNSize);
- freemem(c, StdVLNSize);
- freemem(d, StdVLNSize);
-
- CloseTempRegs; { registers used by arithmetic }
- end.