1: DECLARE FUNCTION Add$ (nnn1$, nnn2$) 2: DECLARE FUNCTION AddComma$ (N$) 3: DECLARE FUNCTION Div$ (nnn1$, nnn2$) 4: DECLARE FUNCTION Fact$ (nn$) 5: DECLARE FUNCTION FindCPUMathErrors! () 6: DECLARE FUNCTION IsGreater! (nnn1$, nnn2$) 7: DECLARE FUNCTION Mul$ (nnn1$, nnn2$) 8: DECLARE FUNCTION Pwr$ (n1$, n2$) 9: DECLARE FUNCTION RemoveSpace$ (t$) 10: DECLARE FUNCTION RemoveZero$ (n1$) 11: DECLARE FUNCTION Solve$ (oe$, Meth!) 12: DECLARE FUNCTION SolveSimple$ (equ$, Meth!) 13: DECLARE FUNCTION Subt$ (nnn1$, nnn2$) 14: DECLARE FUNCTION Switch$ (tof1!, r1$, tof2!, r2$) 15: DECLARE FUNCTION Trim$ (t$) 16: 17: FUNCTION Add$ (nnn1$, nnn2$) 18: n1$ = Trim$(nnn1$): n2$ = Trim$(nnn2$) 19: IF INSTR(n1$, "-") <> 0 XOR INSTR(n2$, "-") <> 0 THEN 20: IF INSTR(n2$, "-") <> 0 THEN Add$ = Subt$(RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")), RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-"))): EXIT FUNCTION 21: IF INSTR(n1$, "-") <> 0 THEN Add$ = Subt$(RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")), RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-"))): EXIT FUNCTION 22: END IF 23: IF INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") <> 0 THEN Neg$ = "-": n1$ = RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")) 24: 25: 26: 27: 28: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 29: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 30: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 31: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 32: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 33: Stor = LEN(n1$) - INSTR(n1$, ".") 34: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 35: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 36: ELSE 37: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 38: END IF 39: 40: FOR q = LEN(n1$) TO 1 STEP -1 41: mx$ = LTRIM$(RTRIM$(STR$((VAL(MID$(n1$, q, 1)) + VAL(MID$(n2$, q, 1))) + Rmd))) 42: Rmd = VAL(LEFT$(mx$, LEN(mx$) - 1)): mx$ = RIGHT$(mx$, 1) 43: cc$ = mx$ + cc$ 44: NEXT q 45: IF Rmd = 0 THEN D$ = cc$ ELSE D$ = LTRIM$(RTRIM$(STR$(Rmd))) + cc$ 46: IF Stor <> 0 THEN D$ = LEFT$(D$, LEN(D$) - Stor) + "." + RIGHT$(D$, Stor) 47: Add$ = Neg$ + D$ 48: 49: END FUNCTION 50: 51: FUNCTION AddComma$ (N$) 52: IF INSTR(N$, ".") = 0 THEN dd = LEN(N$) ELSE dd = INSTR(N$, ".") - 1 53: FOR q = dd TO 1 STEP -1 54: IF (dd - q) MOD 3 = 0 AND q <> dd THEN mm$ = "," + mm$ 55: mm$ = MID$(N$, q, 1) + mm$ 56: NEXT q 57: IF INSTR(N$, ".") <> 0 THEN dc$ = "." + RIGHT$(N$, LEN(N$) - INSTR(N$, ".")) 58: AddComma$ = mm$ + dc$ 59: END FUNCTION 60: 61: FUNCTION Div$ (nnn1$, nnn2$) 62: n1$ = nnn1$: n2$ = nnn2$ 63: IF IsGreater(n1$, n2$) = 3 THEN Div$ = "1": EXIT FUNCTION 64: IF INSTR(n1$, ".") = 0 THEN Mrk = LEN(n1$) ELSE Mrk = INSTR(n1$, ".") 65: DIM Num$(9) 66: Num$(1) = n2$ 67: FOR q = 2 TO 9 68: Num$(q) = Mul$(n2$, Trim$(STR$(q))) 69: NEXT q 70: Level = LEN(n1$) 71: DO 72: Level = Level - 1 73: c = LEN(n1$) - Level: Cl$ = "" 74: DO UNTIL 1 = 2 75: Cl$ = LEFT$(n1$, c) 76: IF IsGreater(n1$, Cl$) = 1 OR IsGreater(n1$, Cl$) = 3 THEN EXIT DO ELSE c = c + 1 77: LOOP 78: mmx = c 79: Cl$ = LEFT$(n1$, mmx) 80: FOR g = 1 TO 9 81: IF IsGreater(Cl$, Num$(g)) = 2 THEN mmz = g - 1: EXIT FOR 82: NEXT g 83: tt$ = tt$ + Trim$(STR$(mmz)) 84: IF Level >= 0 THEN Post$ = STRING$(Level, "0"): pre$ = "" 'ELSE pre$ = "." + STRING$(Level * -1, "0"): Post$ = "" 85: n1$ = RemoveZero$(Subt$(n1$, Num$(mmz) + Post$)) 86: IF Level < 0 AND n1$ <> "0" THEN n1$ = n1$ + "0" 87: 'if Instr(Mrk,tt$,) 88: LOOP UNTIL n1$ = "0" OR Stpp 89: tt$ = RemoveZero$(tt$) 90: 'Debug.Print Mrk 91: IF LEN(tt$) = Mrk - 1 THEN Div$ = tt$ ELSE Div$ = LEFT$(tt$, Mrk) + "." + RIGHT$(tt$, LEN(tt$) - (Mrk + 1)) 92: END FUNCTION 93: 94: SUB Errorr (Msg$) 95: PRINT "Error:"; Msg$ 96: END SUB 97: 98: FUNCTION Fact$ (nn$) 99: ff$ = nn$ 100: gg$ = nn$ 101: DO 102: ff$ = RemoveZero$(Subt$(ff$, "1")) 103: gg$ = RemoveZero$(Mul$(gg$, ff$)) 104: LOOP UNTIL RemoveZero$(ff$) = "1" 105: Fact$ = RemoveZero$(gg$) 106: END FUNCTION 107: 108: FUNCTION FindCPUMathErrors 109: CLS 110: VIEW PRINT 1 TO 24 111: LOCATE 1, 1: PRINT "CPU"; TAB(36); " ³ "; "VMPU" 112: LOCATE 2, 1: PRINT STRING$(36, 196) + "Å" + STRING$(42, 196); 113: LOCATE 25, 1: PRINT "Press Any Key to Stop Test"; 114: VIEW PRINT 3 TO 24 115: IF 33.1 / 331 <> .1 THEN ErrErrs = 1: PRINT 33.1 / 331; TAB(36); " ³ .1" 116: g$ = "-40" 117: inc$ = ".001" 118: DO 119: g$ = Add$(g$, inc$) 120: IF IsGreater(STR$(VAL(g$) - VAL(inc$)), Subt$(g$, inc$)) <> 3 THEN ErrErr1 = 1 121: IF VAL(g$) - VAL(inc$) <> VAL(Subt$(g$, inc$)) AND ErrErr1 = 1 THEN PRINT VAL(g$) - VAL(inc$); TAB(36); " ³ "; VAL(Subt$(g$, inc$)): ErrErrs = ErrErrs + 1 122: 123: IF IsGreater(STR$(VAL(g$) * VAL(inc$)), Mul$(g$, inc$)) <> 3 THEN ErrErr2 = 1 124: IF VAL(g$) * VAL(inc$) <> VAL(Mul$(g$, inc$)) AND ErrErr2 = 1 THEN PRINT VAL(g$) * VAL(inc$); TAB(36); " ³ "; VAL(Mul$(g$, inc$)): ErrErrs = ErrErrs + 1 125: 126: IF IsGreater(STR$(VAL(g$) + VAL(inc$)), Add$(g$, inc$)) <> 3 THEN ErrErr3 = 1 127: IF VAL(g$) + VAL(inc$) <> VAL(Add$(g$, inc$)) AND ErrErr3 = 1 THEN PRINT VAL(g$) + VAL(inc$); TAB(36); " ³ "; VAL(Add$(g$, inc$)): ErrErrs = ErrErrs + 1 128: 129: 130: 'LOCATE CSRLIN, 1: PRINT g$; ", Errors:"; ErrErrs; 131: ErrErr1 = 0: ErrErr2 = 0: ErrErr3 = 0: ErrErr4 = 0: 132: IF INKEY$ <> "" THEN PRINT : EXIT DO 133: LOOP UNTIL g$ = "40" 134: FindCPUMathErrors = ErrErrs 135: X = CSRLIN 136: VIEW PRINT 1 TO 25 137: LOCATE X, 1 138: END FUNCTION 139: 140: FUNCTION IsGreater (nnn1$, nnn2$) 141: n1$ = nnn1$: n2$ = nnn2$ 142: IF INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") = 0 THEN IsGreater = 2: EXIT FUNCTION 143: IF INSTR(n2$, "-") <> 0 AND INSTR(n1$, "-") = 0 THEN IsGreater = 1: EXIT FUNCTION 144: IF INSTR(n2$, "-") <> 0 AND INSTR(n1$, "-") <> 0 THEN nn1$ = n1$: nn2$ = n2$: n1$ = nn2$: n2$ = nn1$ 145: 146: n1$ = RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")) 147: 148: 149: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 150: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 151: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 152: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 153: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 154: Stor = LEN(n1$) - INSTR(n1$, ".") 155: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 156: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 157: ELSE 158: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 159: END IF 160: 161: 162: FOR q = 1 TO LEN(n1$) 163: IF VAL(MID$(n1$, q, 1)) > VAL(MID$(n2$, q, 1)) THEN IsGreater = 1: EXIT FUNCTION 164: IF VAL(MID$(n2$, q, 1)) > VAL(MID$(n1$, q, 1)) THEN IsGreater = 2: EXIT FUNCTION 165: NEXT q 166: IsGreater = 3 167: END FUNCTION 168: 169: FUNCTION Mul$ (nnn1$, nnn2$) 170: nn1$ = Trim$(nnn1$): nn2$ = Trim$(nnn2$) 171: IF nn1$ = "1" THEN Mul$ = nn2$: EXIT FUNCTION 172: IF nn2$ = "1" THEN Mul$ = nn1$: EXIT FUNCTION 173: IF nn1$ = "-1" THEN nn2$ = " " + nn2$: MID$(nn2$, VAL(Switch$(INSTR(nn2$, "-") = 0, "1", INSTR(nn2$, "-") <> 0, STR$(INSTR(nn2$, "-")))), 1) = Switch$(INSTR(nn2$, "-") <> 0, " ", INSTR(nn2$, "-") = 0, "-"): Mul$ = Trim$(nn2$): EXIT FUNCTION 174: IF nn2$ = "-1" THEN nn1$ = " " + nn1$: MID$(nn1$, VAL(Switch$(INSTR(nn1$, "-") = 0, "1", INSTR(nn1$, "-") <> 0, STR$(INSTR(nn1$, "-")))), 1) = Switch$(INSTR(nn1$, "-") <> 0, " ", INSTR(nn1$, "-") = 0, "-"): Mul$ = Trim$(nn1$): EXIT FUNCTION 175: 176: 177: IF LEFT$(nn1$, 1) = "-" XOR LEFT$(nn2$, 1) = "-" THEN Neg$ = "-" ELSE Neg$ = "" 178: 179: IF IsGreater(n1$, n2$) = 2 THEN nn1$ = n2$: nn2$ = n1$: n1$ = nn1$: n2$ = nn2$ 180: 181: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 182: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 183: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 184: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 185: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 186: Stor = LEN(n1$) - INSTR(n1$, ".") 187: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 188: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 189: ELSE 190: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 191: END IF 192: 193: 194: IF INSTR(nn1$, ".") <> 0 OR INSTR(nn2$, ".") <> 0 THEN 195: IF INSTR(nn1$, ".") = 0 THEN nn1$ = nn1$ + ".0" 196: IF INSTR(nn2$, ".") = 0 THEN nn2$ = nn2$ + ".0" 197: 198: Stor = (LEN(nn1$) - INSTR(nn1$, ".")) + (LEN(nn2$) - INSTR(nn2$, ".")) 199: IF INSTR(nn1$, ".") <> 0 THEN nn1$ = LEFT$(nn1$, INSTR(nn1$, ".") - 1) + RIGHT$(nn1$, (LEN(nn1$) - INSTR(nn1$, "."))) 200: IF INSTR(nn2$, ".") <> 0 THEN nn2$ = LEFT$(nn2$, INSTR(nn2$, ".") - 1) + RIGHT$(nn2$, (LEN(nn2$) - INSTR(nn2$, "."))) 201: END IF 202: 203: FOR q1 = LEN(nn2$) TO 1 STEP -1 204: ccc$ = STRING$(LEN(nn2$) - q1, "0") 205: FOR q2 = LEN(nn1$) TO 1 STEP -1 206: mmm$ = RTRIM$(LTRIM$(STR$((VAL(MID$(nn1$, q2, 1)) * VAL(MID$(nn2$, q1, 1))) + Rmd))) 207: Rmd = VAL(LEFT$(mmm$, LEN(mmm$) - 1)): mmm$ = RIGHT$(mmm$, 1) 208: ccc$ = mmm$ + ccc$ 209: NEXT q2 210: ccc$ = LTRIM$(RTRIM$(STR$(Rmd))) + ccc$ 211: tt$ = Add$(tt$, ccc$) 212: Rmd = 0 213: NEXT q1 214: IF (LEN(tt$) - Stor) < 0 THEN tt$ = STRING$((LEN(tt$) - Stor) * -1, "0") + tt$ 215: IF Stor > 0 THEN tt$ = LEFT$(tt$, LEN(tt$) - Stor) + "." + RIGHT$(tt$, Stor) 216: 217: Mul$ = Neg$ + tt$ 218: END FUNCTION 219: 220: FUNCTION Pwr$ (n1$, n2$) 221: nz1$ = n1$ 222: nz2$ = n1$ 223: gg$ = n2$ 224: DO 225: nz1$ = RemoveZero$(Mul$(nz1$, nz2$)) 226: gg$ = RemoveZero$(Subt$(gg$, "1")) 227: LOOP UNTIL RemoveZero$(gg$) = "1" 228: Pwr$ = RemoveZero$(nz1$) 229: END FUNCTION 230: 231: FUNCTION RemoveSpace$ (t$) 232: FOR q = 1 TO LEN(t$) 233: IF MID$(t$, q, 1) = " " THEN ELSE dd$ = dd$ + MID$(t$, q, 1) 234: NEXT q 235: RemoveSpace$ = dd$ 236: END FUNCTION 237: 238: FUNCTION RemoveZero$ (n1$) 239: Neg = INSTR(n1$, "-") 240: IF INSTR(n1$, ".") = 0 THEN ddd = LEN(n1$) ELSE ddd = INSTR(n1$, ".") 241: FOR q = 1 + Neg TO ddd 242: IF MID$(n1$, q, 1) <> "0" THEN EXIT FOR 243: NEXT q 244: IF Neg <> 0 THEN Nx$ = "-" ELSE Nx$ = "" 245: IF RIGHT$(n1$, LEN(n1$) - q + 1) = "" THEN Rz$ = "0" ELSE Rz$ = RIGHT$(n1$, LEN(n1$) - q + 1) 246: IF INSTR(Rz$, ".") = 1 THEN Rz$ = "0" + Rz$ 247: IF INSTR(Rz$, ".") = 0 THEN RemoveZero$ = Nx$ + Rz$: EXIT FUNCTION 248: FOR q = LEN(Rz$) TO INSTR(Rz$, ".") STEP -1 249: IF MID$(Rz$, q, 1) <> "0" THEN EXIT FOR 250: NEXT q 251: RemoveZero$ = Nx$ + LEFT$(Rz$, q) 252: 253: END FUNCTION 254: 255: FUNCTION Solve$ (oe$, Meth) 256: e$ = Trim$(RemoveSpace$(oe$)) 257: DO 258: m = INSTR(e$, "^") 259: IF m = 0 THEN m = INSTR(e$, "*") 260: IF m = 0 THEN m = INSTR(e$, "/") 261: IF m = 0 THEN m = INSTR(e$, "+"): dd = 12 262: IF m = 0 THEN m = INSTR(e$, "-"): dd = 12 263: IF m = 1 AND dd = 12 THEN m = 0 264: dd = 0 265: IF m = 0 THEN GOTO Solved 266: FOR q = 1 TO m - 1 267: IF LTRIM$(RTRIM$(STR$(VAL(MID$(e$, m - q, 1))))) <> MID$(e$, m - q, 1) AND MID$(e$, m - q, 1) <> "." AND (q = 1 AND LEFT$(e$, 1) <> "-") THEN EXIT FOR 268: NEXT q 269: FOR q1 = m - 1 TO LEN(e$) 270: IF LTRIM$(RTRIM$(STR$(VAL(MID$(e$, m + q1, 1))))) <> MID$(e$, m + q1, 1) AND MID$(e$, m + q1, 1) <> "." THEN EXIT FOR 271: NEXT q1 272: eq$ = MID$(e$, m - q + 1, (m - q) - 1 + (q1 + m)) 273: 'MSGBOX e$ + ", " + eq$ + STR$(q) + STR$(q1) 274: 'k$ = (eq$) 275: e$ = LEFT$(e$, m - q) + SolveSimple$(eq$, Meth) + MID$(e$, q1 + m, LEN(e$)) 276: Solved: 277: LOOP UNTIL m = 0 278: Solve$ = e$ 279: END FUNCTION 280: 281: FUNCTION SolveSimple$ (equ$, Meth) 282: IF Meth = 0 THEN 283: IF INSTR(equ$, "^") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "^") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "^") + 1, LEN(equ$) - INSTR(equ$, "^"))): SolveSimple$ = RemoveZero$(Pwr$(z1$, z2$)): EXIT FUNCTION 284: IF INSTR(equ$, "*") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "*") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "*") + 1, LEN(equ$) - INSTR(equ$, "*"))): SolveSimple$ = RemoveZero$(Mul$(z1$, z2$)): EXIT FUNCTION 285: IF INSTR(equ$, "/") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "/") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "/") + 1, LEN(equ$) - INSTR(equ$, "/"))): SolveSimple$ = RemoveZero$(Div$(z1$, z2$)): EXIT FUNCTION 286: IF INSTR(equ$, "+") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "+") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "+") + 1, LEN(equ$) - INSTR(equ$, "+"))): SolveSimple$ = RemoveZero$(Add$(z1$, z2$)): EXIT FUNCTION 287: IF INSTR(equ$, "-") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "-") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "-") + 1, LEN(equ$) - INSTR(equ$, "-"))): SolveSimple$ = RemoveZero$(Subt$(z1$, z2$)): EXIT FUNCTION 288: ELSE 289: IF INSTR(equ$, "^") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "^") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "^") + 1, LEN(equ$) - INSTR(equ$, "^"))): SolveSimple$ = Trim$(STR$(z1 ^ z2)): EXIT FUNCTION 290: IF INSTR(equ$, "*") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "*") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "*") + 1, LEN(equ$) - INSTR(equ$, "*"))): SolveSimple$ = Trim$(STR$(z1 * z2)): EXIT FUNCTION 291: IF INSTR(equ$, "/") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "/") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "/") + 1, LEN(equ$) - INSTR(equ$, "/"))): SolveSimple$ = Trim$(STR$(z1 / z2)): EXIT FUNCTION 292: IF INSTR(equ$, "+") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "+") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "+") + 1, LEN(equ$) - INSTR(equ$, "+"))): SolveSimple$ = Trim$(STR$(z1 + z2)): EXIT FUNCTION 293: IF INSTR(equ$, "-") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "-") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "-") + 1, LEN(equ$) - INSTR(equ$, "-"))): SolveSimple$ = Trim$(STR$(z1 - z2)): EXIT FUNCTION 294: 295: END IF 296: END FUNCTION 297: 298: FUNCTION Subt$ (nnn1$, nnn2$) 299: n1$ = nnn1$: n2$ = nnn2$ 300: 301: IF (INSTR(n2$, "-") <> 0 AND INSTR(n1$, "-") = 0) THEN Subt$ = Add$(n1$, RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-"))): EXIT FUNCTION 302: IF (INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") = 0) THEN Subt$ = "-" + Add$(n2$, RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-"))): EXIT FUNCTION 303: IF (INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") <> 0) THEN n1$ = RIGHT$(n1$, LEN(n2$) - INSTR(n2$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")): IsAnsNeg = 1 304: 305: IF IsGreater(n1$, n2$) = 2 THEN Neg = (1 + IsAnsNeg) MOD 2: dd1$ = n1$: dd2$ = n2$: n1$ = dd2$: n2$ = dd1$ 306: 307: IF INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") <> 0 THEN Neg = 1: n1$ = RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")): Subt$ = "-" + Add$(n1$, n2$): EXIT FUNCTION 308: 309: 310: 311: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 312: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 313: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 314: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 315: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 316: Stor = LEN(n1$) - INSTR(n1$, ".") 317: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 318: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 319: ELSE 320: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 321: END IF 322: 323: 324: FOR q = LEN(n1$) TO 1 STEP -1 325: 326: IF VAL(MID$(n1$, q, 1)) < VAL(MID$(n2$, q, 1)) THEN 327: Num1 = VAL(MID$(n1$, q, 1)) + 10 328: l = 0 329: DO 330: l = l + 1 331: Br$ = MID$(n1$, q - l, 1) 332: IF Br$ = "0" THEN MID$(n1$, q - l, 1) = "9" 333: LOOP UNTIL Br$ <> "0" 334: MID$(n1$, q - l, 1) = RTRIM$(LTRIM$(STR$(VAL(MID$(n1$, q - l, 1)) - 1))) 335: ELSE 336: Num1 = VAL(MID$(n1$, q, 1)) 337: END IF 338: sc = Num1 - VAL(MID$(n2$, q, 1)) 339: cc$ = Trim$(STR$(sc)) + cc$ 340: NEXT q 341: IF Neg = 1 THEN cc$ = "-" + cc$ 342: IF Stor <> 0 THEN cc$ = LEFT$(cc$, LEN(cc$) - Stor) + "." + RIGHT$(cc$, Stor) 343: 344: Subt$ = cc$ 345: 346: END FUNCTION 347: 348: FUNCTION Switch$ (tof1, r1$, tof2, r2$) 349: IF tof1 = -1 THEN Switch$ = r1$ 350: IF tof2 = -1 THEN Switch$ = r2$ 351: END FUNCTION 352: 353: FUNCTION Trim$ (t$) 354: Trim$ = LTRIM$(RTRIM$(t$)) 355: END FUNCTION 356: |