tx · AG2dfz5prcnj1AqfUFtXYfPTiym4kpk6yq3fUWa53A8M 3MqbTfLJ5nrYh6fUbS38Hfpe6T8MP5K5HiT: -0.01400000 Waves 2020.07.17 16:58 [1091470] smart account 3MqbTfLJ5nrYh6fUbS38Hfpe6T8MP5K5HiT > SELF 0.00000000 Waves
{ "type": 13, "id": "AG2dfz5prcnj1AqfUFtXYfPTiym4kpk6yq3fUWa53A8M", "fee": 1400000, "feeAssetId": null, "timestamp": 1594994377236, "version": 1, "sender": "3MqbTfLJ5nrYh6fUbS38Hfpe6T8MP5K5HiT", "senderPublicKey": "EzWkAi3pMjNqjjV3PpJiHWrButTm4aorR4p173qwdGeL", "proofs": [ "4k2KHGrv8EMMyDTd7Wo9ACcQcrVa1QhHjb9U2cc2fZRJQUkdBqvKaBB6mFNpLQVny32tUtwY17TWvDSaFhCRxRti" ], "script": "base64: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AgkAAGgAAAACCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACCQAAaQAAAAIJAABpAAAAAgkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgUAAAABeAUAAAABeAUAAAABeAAAAAAAAAAAaQAAAAAAAAANgAkAAGgAAAACBQAAAAVzY2FsZQUAAAAFc2NhbGUFAAAAAXgFAAAAAXgJAABoAAAAAgUAAAAFc2NhbGUFAAAABXNjYWxlBQAAAAF4BQAAAAF4CQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQUAAAABeAUAAAABeAkAAGgAAAACBQAAAAVzY2FsZQUAAAAFc2NhbGUEAAAABGFzaW4JAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgUAAAAEdmFsMQUAAAAEdmFsMgUAAAAEdmFsMwUAAAAEdmFsNAUAAAAEdmFsNQUAAAAEYXNpbgEAAAAEYXRhbgAAAAIAAAABeAAAAAVzY2FsZQQAAAAEdmFsMQUAAAABeAQAAAAEdmFsMgkAAGkAAAACCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAF4BQAAAAF4BQAAAAF4AAAAAAAAAAADCQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQQAAAAEdmFsMwkAAGkAAAACCQAAaAAAAAIJAABpAAAAAgkAAGkAAAACCQAAaAAAAAIJAABoAAAAAgUAAAABeAUAAAABeAUAAAABeAAAAAAAAAAABQkAAGgAAAACBQAAAAVzY2FsZQUAAAAFc2NhbGUJAABoAAAAAgUAAAABeAUAAAABeAkAAGgAAAACBQAAAAVzY2FsZQUAAAAFc2NhbGUEAAAABHZhbDQJAABpAAAAAgkAAGgAAAACCQAAaQAAAAIJAABoAAAAAgkAAGkAAAACCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAF4BQAAAAF4BQAAAAF4AAAAAAAAAAAHCQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQkAAGgAAAACBQAAAAF4BQAAAAF4CQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQkAAGgAAAACBQAAAAF4BQAAAAF4CQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQQAAAAEdmFsNQkAAGkAAAACCQAAaAAAAAIJAABpAAAAAgkAAGgAAAACCQAAaQAAAAIJAABoAAAAAgkAAGkAAAACCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAF4BQAAAAF4BQAAAAF4AAAAAAAAAAAJCQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQkAAGgAAAACBQAAAAF4BQAAAAF4CQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQkAAGgAAAACBQAAAAF4BQAAAAF4CQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQkAAGgAAAACBQAAAAF4BQAAAAF4CQAAaAAAAAIFAAAABXNjYWxlBQAAAAVzY2FsZQQAAAAFaWF0YW4JAABlAAAAAgkAAGQAAAACCQAAZQAAAAIFAAAABHZhbDEFAAAABHZhbDIFAAAABHZhbDMFAAAABHZhbDQFAAAABWlhdGFuAQAAAAVhdGFuMgAAAAMAAAABeQAAAAF4AAAABXNjYWxlAwkAAGYAAAACBQAAAAF4AAAAAAAAAAAABAAAAAZpYXRhbjIJAQAAAARhdGFuAAAAAgkAAGkAAAACBQAAAAF5BQAAAAF4BQAAAAVzY2FsZQUAAAAGaWF0YW4yAwMJAABmAAAAAgAAAAAAAAAAAAUAAAABeAkAAGcAAAACBQAAAAF5AAAAAAAAAAAABwQAAAAGaWF0YW4yCQAAZAAAAAIJAQAAAARhdGFuAAAAAgkAAGkAAAACBQAAAAF5BQAAAAF4BQAAAAVzY2FsZQAAAAAAAATLLwUAAAAGaWF0YW4yAwMJAABmAAAAAgAAAAAAAAAAAAUAAAABeAkAAGYAAAACAAAAAAAAAAAABQAAAAF5BwQAAAAGaWF0YW4yCQAAZQAAAAIJAQAAAARhdGFuAAAAAgkAAGkAAAACBQAAAAF5BQAAAAF4BQAAAAVzY2FsZQAAAAAAAATLLwUAAAAGaWF0YW4yAwMJAAAAAAAAAgUAAAABeAAAAAAAAAAAAAkAAGYAAAACBQAAAAF5AAAAAAAAAAAABwAAAAAAAATLLwMDCQAAAAAAAAIFAAAAAXgAAAAAAAAAAAAJAABmAAAAAgAAAAAAAAAAAAUAAAABeQcA///////7NNEAAAAAAAAAAAAAAAABAAAAAWkBAAAACXRyaWdmdW5jcwAAAAEAAAABeAQAAAAFc2NhbGUAAAAAAAABhqAEAAAABWlzcXJ0CQEAAAAEc3FydAAAAAEFAAAAAXgEAAAABGlzaW4JAQAAAANzaW4AAAACBQAAAAF4BQAAAAVzY2FsZQQAAAAEaWNvcwkBAAAAA2NvcwAAAAIFAAAAAXgFAAAABXNjYWxlBAAAAAVpYXNpbgkBAAAABGFzaW4AAAACBQAAAAF4BQAAAAVzY2FsZQQAAAAGaWF0YW4yCQEAAAAFYXRhbjIAAAADBQAAAAF4AAAAAAAAAAABBQAAAAVzY2FsZQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAEc3FydAUAAAAFaXNxcnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAA3NpbgUAAAAEaXNpbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAADY29zBQAAAARpY29zCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAARhc2luBQAAAAVpYXNpbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAFYXRhbjIFAAAABmlhdGFuMgUAAAADbmlsAAAAAEG7vSY=", "chainId": 84, "height": 1091470, "spentComplexity": 0 } View: original | compacted Prev: HiBFdABg6bBKwTh6QGg9w5i1jsn4wvrZgcSSus6vjcro Next: 6CAHUJsxDVTbVTfGqbxQJntMc5FUX7WDMXcnXJurGKAh Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func sqrt (S) = if ((2 > S)) | |
5 | + | then S | |
6 | + | else { | |
7 | + | let x0 = 316 | |
8 | + | let x1 = ((x0 + (S / x0)) / 2) | |
9 | + | let x2 = ((x1 + (S / x1)) / 2) | |
10 | + | let x3 = ((x2 + (S / x2)) / 2) | |
11 | + | let x4 = ((x3 + (S / x3)) / 2) | |
12 | + | let x5 = ((x4 + (S / x4)) / 2) | |
13 | + | x5 | |
14 | + | } | |
15 | + | ||
16 | + | ||
4 | 17 | func sin (alpha,scale) = { | |
5 | 18 | let val1 = alpha | |
6 | 19 | let val2 = ((((alpha * alpha) * alpha) / 6) / (scale * scale)) | |
12 | 25 | } | |
13 | 26 | ||
14 | 27 | ||
15 | - | func atan (x,scalefactor) = { | |
28 | + | func cos (alpha,scale) = { | |
29 | + | let val1 = 1 | |
30 | + | let val2 = (((alpha * alpha) / 2) / scale) | |
31 | + | let val3 = ((((((alpha * alpha) * alpha) / 24) / (scale * scale)) * alpha) / scale) | |
32 | + | let val4 = ((((((((alpha * alpha) * alpha) / 720) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * alpha) / scale) | |
33 | + | let val5 = ((((((((((alpha * alpha) * alpha) / 40320) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * alpha) / scale) | |
34 | + | let isin = ((((val1 - val2) + val3) - val4) + val5) | |
35 | + | isin | |
36 | + | } | |
37 | + | ||
38 | + | ||
39 | + | func asin (x,scale) = { | |
16 | 40 | let val1 = x | |
17 | - | let val2 = ((((x * x) * x) / 3) / (scalefactor * scalefactor)) | |
18 | - | let val3 = ((((((x * x) * x) / 5) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) | |
19 | - | let val4 = ((((((((x * x) * x) / 7) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) | |
20 | - | let val5 = ((((((((((x * x) * x) / 9) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) | |
41 | + | let val2 = ((((x * x) * x) / 6) / (scale * scale)) | |
42 | + | let val3 = ((((((((x * x) * x) * 3) / 40) / (scale * scale)) * x) * x) / (scale * scale)) | |
43 | + | let val4 = (((((((((((x * x) * x) * 15) / 336) / (scale * scale)) * x) * x) / (scale * scale)) * x) * x) / (scale * scale)) | |
44 | + | let val5 = ((((((((((((((x * x) * x) * 105) / 3456) / (scale * scale)) * x) * x) / (scale * scale)) * x) * x) / (scale * scale)) * x) * x) / (scale * scale)) | |
45 | + | let asin = ((((val1 + val2) + val3) + val4) + val5) | |
46 | + | asin | |
47 | + | } | |
48 | + | ||
49 | + | ||
50 | + | func atan (x,scale) = { | |
51 | + | let val1 = x | |
52 | + | let val2 = ((((x * x) * x) / 3) / (scale * scale)) | |
53 | + | let val3 = ((((((x * x) * x) / 5) / (scale * scale)) * (x * x)) / (scale * scale)) | |
54 | + | let val4 = ((((((((x * x) * x) / 7) / (scale * scale)) * (x * x)) / (scale * scale)) * (x * x)) / (scale * scale)) | |
55 | + | let val5 = ((((((((((x * x) * x) / 9) / (scale * scale)) * (x * x)) / (scale * scale)) * (x * x)) / (scale * scale)) * (x * x)) / (scale * scale)) | |
21 | 56 | let iatan = (((val1 - val2) + val3) - val4) | |
22 | 57 | iatan | |
23 | 58 | } | |
24 | 59 | ||
25 | 60 | ||
26 | - | func atan2 (y,x, | |
61 | + | func atan2 (y,x,scale) = if ((x > 0)) | |
27 | 62 | then { | |
28 | - | let iatan2 = atan((y / x), | |
63 | + | let iatan2 = atan((y / x), scale) | |
29 | 64 | iatan2 | |
30 | 65 | } | |
31 | 66 | else if (if ((0 > x)) | |
32 | 67 | then (y >= 0) | |
33 | 68 | else false) | |
34 | 69 | then { | |
35 | - | let iatan2 = (atan((y / x), | |
70 | + | let iatan2 = (atan((y / x), scale) + 314159) | |
36 | 71 | iatan2 | |
37 | 72 | } | |
38 | 73 | else if (if ((0 > x)) | |
39 | 74 | then (0 > y) | |
40 | 75 | else false) | |
41 | 76 | then { | |
42 | - | let iatan2 = (atan((y / x), | |
77 | + | let iatan2 = (atan((y / x), scale) - 314159) | |
43 | 78 | iatan2 | |
44 | 79 | } | |
45 | 80 | else if (if ((x == 0)) | |
56 | 91 | @Callable(i) | |
57 | 92 | func trigfuncs (x) = { | |
58 | 93 | let scale = 100000 | |
94 | + | let isqrt = sqrt(x) | |
59 | 95 | let isin = sin(x, scale) | |
96 | + | let icos = cos(x, scale) | |
97 | + | let iasin = asin(x, scale) | |
60 | 98 | let iatan2 = atan2(x, 1, scale) | |
61 | - | WriteSet([DataEntry("sin", isin), DataEntry("atan2", iatan2)]) | |
99 | + | WriteSet([DataEntry("sqrt", isqrt), DataEntry("sin", isin), DataEntry("cos", icos), DataEntry("asin", iasin), DataEntry("atan2", iatan2)]) | |
62 | 100 | } | |
63 | 101 | ||
64 | 102 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func sqrt (S) = if ((2 > S)) | |
5 | + | then S | |
6 | + | else { | |
7 | + | let x0 = 316 | |
8 | + | let x1 = ((x0 + (S / x0)) / 2) | |
9 | + | let x2 = ((x1 + (S / x1)) / 2) | |
10 | + | let x3 = ((x2 + (S / x2)) / 2) | |
11 | + | let x4 = ((x3 + (S / x3)) / 2) | |
12 | + | let x5 = ((x4 + (S / x4)) / 2) | |
13 | + | x5 | |
14 | + | } | |
15 | + | ||
16 | + | ||
4 | 17 | func sin (alpha,scale) = { | |
5 | 18 | let val1 = alpha | |
6 | 19 | let val2 = ((((alpha * alpha) * alpha) / 6) / (scale * scale)) | |
7 | 20 | let val3 = ((((((alpha * alpha) * alpha) / 120) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) | |
8 | 21 | let val4 = ((((((alpha * alpha) * alpha) / 5040) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) | |
9 | 22 | let val5 = ((((((((alpha * alpha) * alpha) / 362880) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) | |
10 | 23 | let isin = ((((val1 - val2) + val3) - val4) + val5) | |
11 | 24 | isin | |
12 | 25 | } | |
13 | 26 | ||
14 | 27 | ||
15 | - | func atan (x,scalefactor) = { | |
28 | + | func cos (alpha,scale) = { | |
29 | + | let val1 = 1 | |
30 | + | let val2 = (((alpha * alpha) / 2) / scale) | |
31 | + | let val3 = ((((((alpha * alpha) * alpha) / 24) / (scale * scale)) * alpha) / scale) | |
32 | + | let val4 = ((((((((alpha * alpha) * alpha) / 720) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * alpha) / scale) | |
33 | + | let val5 = ((((((((((alpha * alpha) * alpha) / 40320) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * (alpha * alpha)) / (scale * scale)) * alpha) / scale) | |
34 | + | let isin = ((((val1 - val2) + val3) - val4) + val5) | |
35 | + | isin | |
36 | + | } | |
37 | + | ||
38 | + | ||
39 | + | func asin (x,scale) = { | |
16 | 40 | let val1 = x | |
17 | - | let val2 = ((((x * x) * x) / 3) / (scalefactor * scalefactor)) | |
18 | - | let val3 = ((((((x * x) * x) / 5) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) | |
19 | - | let val4 = ((((((((x * x) * x) / 7) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) | |
20 | - | let val5 = ((((((((((x * x) * x) / 9) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) * (x * x)) / (scalefactor * scalefactor)) | |
41 | + | let val2 = ((((x * x) * x) / 6) / (scale * scale)) | |
42 | + | let val3 = ((((((((x * x) * x) * 3) / 40) / (scale * scale)) * x) * x) / (scale * scale)) | |
43 | + | let val4 = (((((((((((x * x) * x) * 15) / 336) / (scale * scale)) * x) * x) / (scale * scale)) * x) * x) / (scale * scale)) | |
44 | + | let val5 = ((((((((((((((x * x) * x) * 105) / 3456) / (scale * scale)) * x) * x) / (scale * scale)) * x) * x) / (scale * scale)) * x) * x) / (scale * scale)) | |
45 | + | let asin = ((((val1 + val2) + val3) + val4) + val5) | |
46 | + | asin | |
47 | + | } | |
48 | + | ||
49 | + | ||
50 | + | func atan (x,scale) = { | |
51 | + | let val1 = x | |
52 | + | let val2 = ((((x * x) * x) / 3) / (scale * scale)) | |
53 | + | let val3 = ((((((x * x) * x) / 5) / (scale * scale)) * (x * x)) / (scale * scale)) | |
54 | + | let val4 = ((((((((x * x) * x) / 7) / (scale * scale)) * (x * x)) / (scale * scale)) * (x * x)) / (scale * scale)) | |
55 | + | let val5 = ((((((((((x * x) * x) / 9) / (scale * scale)) * (x * x)) / (scale * scale)) * (x * x)) / (scale * scale)) * (x * x)) / (scale * scale)) | |
21 | 56 | let iatan = (((val1 - val2) + val3) - val4) | |
22 | 57 | iatan | |
23 | 58 | } | |
24 | 59 | ||
25 | 60 | ||
26 | - | func atan2 (y,x, | |
61 | + | func atan2 (y,x,scale) = if ((x > 0)) | |
27 | 62 | then { | |
28 | - | let iatan2 = atan((y / x), | |
63 | + | let iatan2 = atan((y / x), scale) | |
29 | 64 | iatan2 | |
30 | 65 | } | |
31 | 66 | else if (if ((0 > x)) | |
32 | 67 | then (y >= 0) | |
33 | 68 | else false) | |
34 | 69 | then { | |
35 | - | let iatan2 = (atan((y / x), | |
70 | + | let iatan2 = (atan((y / x), scale) + 314159) | |
36 | 71 | iatan2 | |
37 | 72 | } | |
38 | 73 | else if (if ((0 > x)) | |
39 | 74 | then (0 > y) | |
40 | 75 | else false) | |
41 | 76 | then { | |
42 | - | let iatan2 = (atan((y / x), | |
77 | + | let iatan2 = (atan((y / x), scale) - 314159) | |
43 | 78 | iatan2 | |
44 | 79 | } | |
45 | 80 | else if (if ((x == 0)) | |
46 | 81 | then (y > 0) | |
47 | 82 | else false) | |
48 | 83 | then 314159 | |
49 | 84 | else if (if ((x == 0)) | |
50 | 85 | then (0 > y) | |
51 | 86 | else false) | |
52 | 87 | then -314159 | |
53 | 88 | else 0 | |
54 | 89 | ||
55 | 90 | ||
56 | 91 | @Callable(i) | |
57 | 92 | func trigfuncs (x) = { | |
58 | 93 | let scale = 100000 | |
94 | + | let isqrt = sqrt(x) | |
59 | 95 | let isin = sin(x, scale) | |
96 | + | let icos = cos(x, scale) | |
97 | + | let iasin = asin(x, scale) | |
60 | 98 | let iatan2 = atan2(x, 1, scale) | |
61 | - | WriteSet([DataEntry("sin", isin), DataEntry("atan2", iatan2)]) | |
99 | + | WriteSet([DataEntry("sqrt", isqrt), DataEntry("sin", isin), DataEntry("cos", icos), DataEntry("asin", iasin), DataEntry("atan2", iatan2)]) | |
62 | 100 | } | |
63 | 101 | ||
64 | 102 |
github/deemru/w8io/169f3d6 55.38 ms ◑![]()