Adapting square root and I hope it works.
Looks like LDC does not push to the stack. But it does so that means the length for wide_iinc is wrong:
147: iinc_w 12, -1023 153: iload 9 155: ldc #13 // int 1048575
So let me see, the length is six. Okay so yeah I did an extra byte because wide instructions get their opcode length considered already. So yeah I had 6 down so it was skipping the next two bytes.
Awesome! SQUARE ROOT WORKS I AM SO HAPPY.
Also! Randomly generated values work perfectly fine, so this is a very good thing. At least smashing it with random values would be like a rough test of whether or not things really work and such.
Damn, some of the values are off by 1 ulp. Will need to figure that out.
Okay so since I have a value that is off by one, I am going to need a special class which for example can be given a correct range for values.
Going to make SpringCoat method strictfp.
I am at a point where most instructions have been implemented and the ones left so far have never been hit yet, so I am going to implement those just to be done and such.