Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //by Variouscacti
- //How To Use:
- //Name function "arcsin" for compatibility with my other functions
- //Input a value to the stat "arcsinInput" 1000000 times the intended input, where -1000000 <= input <= 1000000
- //Output will be in the stat "arcsinOutput", where -90 <= output <= 90 (Calculation is in degrees)
- //Requires function "sqrt": https://pastebin.com/ufZHxJFT
- //Desmos graph: https://www.desmos.com/calculator/hhceazy9ba
- //Source for estimation: https://wrfranklin.org/Research/Short_Notes/arcsin/fastsqrt.html (Modified version of [2,4] quotient used)
- //Enjoy!
- //check input
- if or (stat arcsinInput < -1000000, stat arcsinInput > 1000000) {
- chat "Error! Invalid arcsin input!"
- exit
- }
- //setup
- if (stat arcsinInput < 0, stat arcsinInput >= -1000000) {
- stat arcsinInput *= -1
- stat arcsinNegative = 1
- stat arcsinOutput = %stat.player/arcsinInput%
- stat arcsinDen = %stat.player/arcsinInput%
- } else {
- stat arcsinOutput = %stat.player/arcsinInput%
- stat arcsinDen = %stat.player/arcsinInput%
- }
- //numerator
- if () {
- stat arcsinOutput *= -21440080220
- stat arcsinOutput /= 1000000
- stat arcsinOutput += 11030071310
- stat arcsinOutput *= %stat.player/arcsinInput%
- stat arcsinOutput += 15070951110000000
- }
- //denominator
- if () {
- stat arcsinDen *= -1535779990
- stat arcsinDen /= 1000000
- stat arcsinDen += 02836182315
- stat arcsinDen *= %stat.player/arcsinInput%
- stat arcsinDen /= 1000000
- }
- if () {
- stat arcsinDen += -9315200116
- stat arcsinDen *= %stat.player/arcsinInput%
- stat arcsinDen /= 1000000
- stat arcsinDen += -4089766186
- stat arcsinDen *= %stat.player/arcsinInput%
- }
- if () {
- stat arcsinDen += 15071716000000000
- stat arcsinDen /= 1000
- //get sqrt
- stat arcsinInput *= %stat.player/arcsinInput%
- stat sqrtInput = 1000000000000
- stat sqrtInput -= %stat.player/arcsinInput%
- function sqrt false
- }
- //final calculations
- if (stat arcsinNegative = 1) {
- stat arcsinOutput /= %stat.player/arcsinDen%
- stat arcsinOutput *= 1000
- stat arcsinOutput -= %stat.player/sqrtOutput%
- stat arcsinOutput += 10000
- stat arcsinOutput *= -57295780
- } else {
- stat arcsinOutput /= %stat.player/arcsinDen%
- stat arcsinOutput *= 1000
- stat arcsinOutput += 10000
- stat arcsinOutput -= %stat.player/sqrtOutput%
- stat arcsinOutput *= 57295780
- }
- if () {
- stat arcsinOutput /= 1000000000000
- //cleanup
- stat arcsinInput = 0
- stat arcsinDen = 0
- stat sqrtOutput = 0
- stat arcsinNegative = 0
- }
Advertisement
Add Comment
Please, Sign In to add comment