Square root of x
Syntax
sqr(x)
Synonyms
sqrt(x) -- only in Premiere FilterFactory/TransitionFactory
It was added in the
Inofficial patch.
Original Machine Code (in OPER resource) of Filter Factory 3.0 and 3.0.4 for Photoshop/Win32
| 5B | pop ebx (param_x) | . |
| 83 FB 01 | cmp ebx,$01 (1) | . |
| 7E 18 | jle +$18 (@@2) | if (param_x <= 1) goto @@1; // return param_x |
| 8B CB | mov ecx,ebx | ecx = param_x; |
| D1 EB | shr ebx,1 | param_x /= $10; |
| B8 02 00 00 00 | mov eax,$00000002 (2) | eax = 2; |
| @@1: | @@1: | |
| 3B D8 | cmp ebx,eax | . |
| 7E 0B | jle +$0b (@@2) | if (param_x <= eax) goto @@2; |
| 8B C1 | mov eax,ecx | eax = ecx; |
| 99 | cdq | edx = signbit(eax); |
| F7 F3 | div ebx | eax /= param_x; |
| 03 D8 | add ebx,eax | param_x += eax; |
| D1 EB | shr ebx,1 | param_x /= $10; |
| EB F1 | jmp -$0f (@@1) | goto @@1; |
| @@2: | @@2: | |
| 53 | push ebx | return param_x; |
int sqr(int x) {
int ebx = x;
if (ebx > 1) {
int ecx = ebx;
ebx = ebx >> 1;
int eax = 2;
while (ebx > eax) {
eax = ecx;
eax /= ebx;
ebx += eax;
ebx = ebx >> 1;
}
}
return ebx;
}