Skip to content

Commit 7b1aac6

Browse files
authored
Add files via upload
updated files & added chart
1 parent 24811a7 commit 7b1aac6

3 files changed

Lines changed: 217 additions & 0 deletions

File tree

-breakinfinitycommands.sk

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
2+
# Example usage:
3+
#
4+
# /gte 1e4 1e5 returns false
5+
# /gte 1.52487e5823 1.38924e5823 returns true
6+
#
7+
# /tobignumber 43984205 returns 4.398420500000004e7 (due to binary stuff)
8+
#
9+
# /biglog 6.23489e945 2 returns 3139.526432205491, calculated using log2(10)*log({_n}) returns 3139.52643221
10+
#
11+
# /bigdiv 7.48990e843 1.8345e841 returns 8.121559007904436e1, hypercalc returns 8.121559007904436e1
12+
#
13+
# /bigmultiply 4.38291237e8734267 1.83249230289e2348942547 returns 2.534175728913982e2357676814, hypercalc returns 2.5342e2357676814 (starting to think increasing number accuracy in skript config wasn't needed)
14+
#
15+
# /bigformat 3.328e37 returns 13.28UD
16+
# /bigformat 9.234882e8349 returns 1.234882e8349
17+
#
18+
# /bigadd 5.2348234e8420956258 4.8124209e8420956256 returns 1.2829496422599713e8420956258, hypercalc returns 1.2829e8420956258
19+
#
20+
# /bigremove 2.428935e42364 1.21389e42363 returns 1.307546e42364, hypercalc returns 1.307546000e42364
21+
# /bigremove 2.348e3859234809 1.3487e4934794347349 returns 0e0 (negative numbers bad cuz log(-3) = NaN, etc.)
22+
#
23+
# /bigpow 1.78234e7342 347 returns 1.2408582580979455e2547761, hypercalc returns 1.2408583e2547761
24+
# /bigpow 6.0939e8734 0.2945 returns 2.4782874218354545e2572, hypercalc returns 2.4782874218e2572
25+
#
26+
27+
command gte <string> <string>:
28+
trigger:
29+
message gte(arg-1, arg-2)
30+
command tobignumber <number>:
31+
trigger:
32+
message tobignumber(arg-1)
33+
command biglog <string> <number>:
34+
trigger:
35+
message biglog(arg-1, arg-2)
36+
command bigdiv <string> <string>:
37+
trigger:
38+
message bigdiv(arg-1, arg-2)
39+
command bigmultiply <string> <string>:
40+
trigger:
41+
message bigmultiply(arg-1, arg-2)
42+
command bigformat <string>:
43+
trigger:
44+
message bigformat(arg-1)
45+
command bigadd <string> <string>:
46+
trigger:
47+
message bigadd(arg-1, arg-2)
48+
command bigremove <string> <string>:
49+
trigger:
50+
message bigremove(arg-1, arg-2)
51+
command bigpow <string> <number>:
52+
trigger:
53+
message bigpow(arg-1, arg-2)
54+
55+
56+
command speedtest:
57+
trigger:
58+
message "starting test"
59+
set {_var} to "1e5"
60+
set {_t} to now
61+
loop 10000 times:
62+
set {_var} to biglog({_var}, 10)
63+
message {_var}
64+
message difference between now and {_t}
65+
wait 3 seconds
66+
set {_var} to 10000
67+
set {_t} to now
68+
loop 10000 times:
69+
set {_var} to log({var})+10
70+
message {_var}
71+
message difference between now and {_t}
72+
73+

-chart.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
SKRIPT:
2+
MULTIPLICATION AND DIVIDING AND ADDING:
3+
10,000 times: 3 ms
4+
1 time: 0.0003 ms
5+
REMOVING AND POWERS:
6+
10,000 times: 4 ms
7+
1 time: 0.0004 ms
8+
BREAKINFINITY:
9+
DIVIDING:
10+
10,000 times: 212 ms
11+
1 time: 0.0212 ms
12+
ADDING:
13+
10,000 times: 157 ms
14+
1 time: 0.0157 ms
15+
REMOVING:
16+
10,000 times: 165 ms
17+
1 time: 0.0165 ms
18+
POWERS:
19+
10,000 times: 85 ms
20+
1 time: 0.0085 ms
21+
22+

breakinfinity.sk

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# !! DON'T CHANGE ANYTHING
2+
#
3+
#
4+
options:
5+
zeros: 45 # Amount of zeros for the program to use scientfic notation (limited at 183)
6+
7+
8+
on load:
9+
set {z} to {@zeros}
10+
if {z} > 183:
11+
set {z} to 183
12+
function gte(n: string, n2: string) :: boolean:
13+
set {_n::*} to {_n} split at "e"
14+
set {_n2::*} to {_n2} split at "e"
15+
return true if {_n2::2} parsed as number < {_n::2} parsed as number
16+
return false if {_n2::2} parsed as number > {_n::2} parsed as number
17+
return true if {_n2::1} parsed as number <= {_n::1} parsed as number
18+
return false
19+
function tobignumber(n: number) :: string:
20+
return "%10^(log({_n})-floor(log({_n})))%e%floor(log({_n}))%"
21+
function privatetobignumberfromlog(n: number) :: string:
22+
return "%10^({_n}-floor({_n}))%e%floor({_n})%"
23+
function privateadd(n: string) :: string:
24+
set {_n::*} to split {_n} at "e"
25+
if {_n::2} parsed as number > 18:
26+
return "%{_n::1}%e%{_n::2}%"
27+
if {_n::2} parsed as number < -18:
28+
set {_n::1} to 1
29+
set {_n::2} to 0
30+
return "%{_n::1}%e%{_n::2}%"
31+
set {_n::1} to {_n::1} parsed as number+1/10^{_n::2} parsed as number
32+
if {_n::1} >= 10:
33+
set {_n::1} to {_n::1}/10
34+
set {_n::2} to {_n::2} parsed as number+1
35+
return "%{_n::1}%e%{_n::2}%"
36+
function biglog(n: string, b: number = 10) :: number:
37+
set {_n::*} to {_n} split at "e"
38+
return {_n::2} parsed as number*log(10, {_b})+log({_n::1} parsed as number, {_b})
39+
function biglog2(n: string) :: number:
40+
return biglog({_n}, 2)
41+
function biglog3(n: string) :: number:
42+
return biglog({_n}, 3)
43+
function biglog5(n: string) :: number:
44+
return biglog({_n}, 5)
45+
function bigdiv(n: string, n2: string) :: string:
46+
set {_n::*} to {_n} split at "e"
47+
return "0e0" if {_n::1} parsed as number = 0
48+
return privatetobignumberfromlog(biglog({_n})-biglog({_n2}))
49+
function bigmultiply(n: string, n2: string) :: string:
50+
set {_n2::*} to {_n2} split at "e"
51+
return "0e0" if {_n2::1} parsed as number = 0
52+
set {_n::*} to {_n} split at "e"
53+
return "0e0" if {_n::1} parsed as number = 0
54+
return privatetobignumberfromlog(biglog({_n})+biglog({_n2}))
55+
function privatebignumformat(n: number) :: text:
56+
set {_data} to "NQQGNT,180|OQQGNT,177|SPGNT,174|SXQGNT,171|QNQGNT,168|QDQGNT,165|QGNT,162|DQGNT,159|UQGNT,156|QQGNT,153|NQDDR,150|OQDDR,147|SPQDR,144|SXQDR,141|QNQDR,138|QDQDR,135|TQDR,132|DQDR,129|UQDR,126|QDDR,123|NOTG,120|OCTG,117|SPTG,114|SSTG,111|QNTG,108|QTTG,105|TSTG,102|DTG,99|UTG,96|TGN,93|NVG,90|OVG,87|SPG,84|SEV,81|QNV,78|QTV,75|TVG,72|DVG,69|UVGN,66|VGN,63|NVD,60|OCD,57|SPD,54|SXD,51|QND,48|QAD,45|TD,42|DD,39|UD,36|DE,33|N,30|O,27|SP,24|SX,21|QI,18|QA,15|T,12|B,9|M,6|K,3"
57+
loop split {_data} at "|":
58+
set {_s::*} to split loop-value at ","
59+
{_s::2} parsed as number < {z}
60+
{_n} >= 10 ^ {_s::2} parsed as number
61+
return "%(rounded down {_n} / 10 ^ {_s::2} parsed as number*100)/100%%{_s::1}%"
62+
return "%(rounded down {_n}*100)/100%"
63+
function bigformat(n: string) :: text:
64+
set {_n::*} to {_n} split at "e"
65+
if {_n::2} parsed as number <= {z}:
66+
return privatebignumformat({_n::1} parsed as number*10^{_n::2} parsed as number)
67+
else:
68+
return {_n}
69+
function bigadd(n: string, n2: string) :: string:
70+
set {_n::*} to {_n} split at "e"
71+
set {_n2::*} to {_n2} split at "e"
72+
return {_n} if {_n::2} parsed as number-{_n2::2} parsed as number >= 18
73+
return {_n2} if {_n::2} parsed as number-{_n2::2} parsed as number <= -18
74+
set {_n::1} to {_n::1} parsed as number+{_n2::1} parsed as number/10^({_n::2} parsed as number-{_n2::2} parsed as number)
75+
if {_n::1} >= 10:
76+
set {_n::1} to {_n::1}/10
77+
set {_n::2} to {_n::2} parsed as number+1
78+
if {_n::1} < 1:
79+
set {_n::1} to {_n::1} *10
80+
set {_n::2} to {_n::2} parsed as number - 1
81+
return "%{_n::1}%e%{_n::2}%"
82+
function bigremove(n: string, n2: string) :: string:
83+
set {_n::*} to {_n} split at "e"
84+
set {_n2::*} to {_n2} split at "e"
85+
return {_n} if {_n::2} parsed as number-{_n2::2} parsed as number >= 18
86+
return "0e0" if {_n::1} parsed as number-{_n2::1} parsed as number/10^({_n::2} parsed as number-{_n2::2} parsed as number) < 0
87+
set {_n::1} to {_n::1} parsed as number-{_n2::1} parsed as number/10^({_n::2} parsed as number-{_n2::2} parsed as number)
88+
if {_n::1} < 1:
89+
set {_n::1} to {_n::1} *10
90+
set {_n::2} to {_n::2} parsed as number - 1
91+
if {_n::1} >= 10:
92+
set {_n::1} to {_n::1}/10
93+
set {_n::2} to {_n::2} parsed as number+1
94+
return "%{_n::1}%e%{_n::2}%"
95+
function tonumber(n: string) :: number:
96+
return {_n} if {_n} = {_n} parsed as number
97+
set {_n::*} to split {_n} at "e"
98+
return {_n::1} parsed as number*10^{_n::2} parsed as number
99+
function bigpow(n: string, n2: number) :: string:
100+
return privatetobignumberfromlog({_n2}*biglog({_n}))
101+
102+
# function list:
103+
#
104+
# gte({_n}, {_n2}), returns true if {_n} >= {_n2}, returns false if {_n} < {_n2}
105+
#
106+
# tobignumber(%number%), returns %number% in bignumber format
107+
#
108+
# biglog({_n}, %number%), returns log%number%({_n}) in number format
109+
#
110+
# bigdiv({_n}, {_n2}), returns {_n}/{_n2} in bignumber format
111+
#
112+
# bigmultiply({_n}, {_n2}), returns {_n}*{_n2} in bignumber format
113+
#
114+
# bigformat({_n}), returns a formatted version of {_n} using regular format up to zeros (configurable in options) zeros
115+
#
116+
# bigadd({_n}, {_n2}), returns {_n}+{_n2} in bignumber format
117+
#
118+
# bigremove({_n}, {_n2}), returns {_n}-{_n2} in bignumber format
119+
#
120+
# bigpow({_n}, %number%), returns {_n}^%regular number% in bignumber format
121+
#
122+

0 commit comments

Comments
 (0)