Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
New Challenges
#25
I did this some time ago:

Code:
DECLARE SUB BigMul (op1 AS STRING, op2 AS INTEGER)
DECLARE SUB BigAdd (op1 AS STRING, op2 AS STRING)
DECLARE SUB BigSub (op1 AS STRING, op2 AS STRING)
DECLARE SUB BigDiv (op1 AS STRING, op2 AS INTEGER)
DIM SHARED x AS STRING * 512
DIM SHARED x2 AS STRING * 512
DIM SHARED x3 AS STRING * 512
DIM SHARED x4 AS STRING * 512

CLS

x = CHR$(1) + CHR$(0) + STRING$(510, 0)
BigDiv x, 5
x3 = x

PRINT "Calculating atn(1/5):";
FOR a = 0 TO 878
  LOCATE 1, 22: PRINT a + 1; "/ 879"
  BigDiv x, 25
  x2 = x
  BigDiv x2, a * 2 + 3
  IF a AND 1 THEN
    BigAdd x3, x2
  ELSE
    BigSub x3, x2
  END IF
NEXT a

x = CHR$(1) + CHR$(0) + STRING$(510, 0)
BigDiv x, 239
x4 = x

PRINT "Calculating atn(1/239):";
FOR a = 0 TO 257
  LOCATE 2, 24: PRINT a + 1; "/ 258"
  BigDiv x, 239
  BigDiv x, 239
  x2 = x
  BigDiv x2, a * 2 + 3
  IF a AND 1 THEN
    BigAdd x4, x2
  ELSE
    BigSub x4, x2
  END IF
NEXT a

BigMul x3, 4
BigSub x3, x4
BigMul x3, 4

PRINT "PI = ";
FOR t% = 1 TO 1000
  PRINT LTRIM$(STR$(ASC(MID$(x3, 1, 1)) MOD 10));
  IF t% = 1 THEN PRINT ".";
  MID$(x3, 1, 1) = CHR$(0)
  BigMul x3, 10
NEXT t%

SUB BigAdd (op1 AS STRING, op2 AS STRING)

  carry& = 0
  FOR c% = 511 TO 1 STEP -2
    add1& = CVL(MID$(op1, c%, 2) + CHR$(0) + CHR$(0))
    add2& = CVL(MID$(op2, c%, 2) + CHR$(0) + CHR$(0))
    thing& = add1& + add2& + carry&
    IF thing& > 65536 THEN
      thing& = thing& - 65536
      carry& = 1
    ELSE
      carry& = 0
    END IF
    IF thing& > 32767 THEN thing& = thing& - 65536
    MID$(op1, c%, 2) = MKI$(thing&)
  NEXT c%

END SUB

SUB BigDiv (op1 AS STRING, op2 AS INTEGER)

  numq& = CVL(MID$(op1, 1, 2) + CHR$(0) + CHR$(0)) \ op2
  numr& = CVL(MID$(op1, 1, 2) + CHR$(0) + CHR$(0)) MOD op2
  MID$(op1, 1, 1) = CHR$(numq& AND 255)
  MID$(op1, 2, 1) = CHR$(numq& \ 256)
  nextval$ = CHR$(numr& AND 255) + CHR$(numr& \ 256)
  FOR c% = 3 TO 511 STEP 2
    numq& = CVL(MID$(op1, c%, 2) + nextval$) \ op2
    numr& = CVL(MID$(op1, c%, 2) + nextval$) MOD op2
    MID$(op1, c%, 1) = CHR$(numq& AND 255)
    MID$(op1, c% + 1, 1) = CHR$(numq& \ 256)
    nextval$ = CHR$(numr& AND 255) + CHR$(numr& \ 256)
  NEXT c%

END SUB

SUB BigMul (op1 AS STRING, op2 AS INTEGER)

  carry& = 0
  FOR c% = 511 TO 1 STEP -2
    mul& = CVL(MID$(op1, c%, 2) + CHR$(0) + CHR$(0))
    thing& = mul& * op2 + carry&
    carry& = thing& \ 65536
    thing& = thing& AND 65535
    IF thing& > 32767 THEN thing& = thing& - 65536
    MID$(op1, c%, 2) = MKI$(thing&)
  NEXT c%

END SUB

SUB BigSub (op1 AS STRING, op2 AS STRING)

  borrow& = 0
  FOR c% = 511 TO 1 STEP -2
    sub1& = CVL(MID$(op1, c%, 2) + CHR$(0) + CHR$(0))
    sub2& = CVL(MID$(op2, c%, 2) + CHR$(0) + CHR$(0))
    thing& = sub1& - sub2& - borrow&
    IF thing& < 0 THEN
      thing& = thing& + 65536
      borrow& = 1
    ELSE
      borrow& = 0
    END IF
    IF thing& > 32767 THEN thing& = thing& - 65536
    MID$(op1, c%, 2) = MKI$(thing&)
  NEXT c%

END SUB
Reply


Messages In This Thread
New Challenges - by wildcard - 09-10-2002, 03:46 AM
New Challenges - by wizardlife - 09-10-2002, 06:41 AM
New Challenges - by wizardlife - 09-10-2002, 06:44 AM
Another challenge - by LooseCaboose - 09-10-2002, 09:11 AM
New Challenges - by aetherfox - 09-15-2002, 06:21 PM
New Challenges - by wizardlife - 09-16-2002, 01:28 AM
New Challenges - by wildcard - 09-16-2002, 02:14 AM
New Challenges - by mofu - 09-26-2002, 01:10 AM
New Challenges - by wildcard - 09-26-2002, 02:38 AM
New Challenges - by Neo - 09-26-2002, 02:29 PM
New Challenges - by mofu - 09-26-2002, 05:02 PM
New Challenges - by wildcard - 09-26-2002, 07:36 PM
New Challenges - by mofu - 09-27-2002, 12:32 AM
New Challenges - by na_th_an - 11-06-2002, 03:30 AM
New Challenges - by wizardlife - 11-06-2002, 04:30 AM
loosecabooses challange... - by eKrax - 12-17-2002, 04:44 AM
New Challenges - by LooseCaboose - 12-17-2002, 04:59 AM
New Challenges - by LooseCaboose - 12-18-2002, 06:59 AM
... - by eKrax - 12-18-2002, 08:06 AM
New Challenges - by LooseCaboose - 12-18-2002, 09:22 AM
New Challenges - by Generic - 02-03-2003, 04:30 AM
About the pi program... - by oracle - 03-21-2003, 09:39 AM
New Challenges - by someone42 - 03-21-2003, 03:30 PM
pi - by oracle - 03-22-2003, 03:25 AM
New Challenges - by someone42 - 03-22-2003, 08:43 AM
New Challenges - by oracle - 03-22-2003, 11:45 AM

Forum Jump:


Users browsing this thread: 2 Guest(s)