Guest User

Element.java

a guest
Mar 1st, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.21 KB | None | 0 0
  1. import java.math.BigInteger;
  2.  
  3. public class Element{
  4. private static final BigInteger minusOne = BigInteger.valueOf(-1);
  5. private static final BigInteger zero = BigInteger.valueOf(0);
  6. private static final BigInteger one = BigInteger.valueOf(1);
  7. private static final BigInteger two = BigInteger.valueOf(2);
  8.  
  9. //VB for variable so it doesn't interfere with simple getter names
  10. private BigInteger iVB;
  11. private BigInteger jVB;
  12. private BigInteger aVB;
  13. private BigInteger bVB;
  14. private BigInteger cVB;
  15. private BigInteger dVB;
  16. private BigInteger eVB;
  17. private BigInteger fVB;
  18. private BigInteger nVB;
  19. private BigInteger xVB;
  20. private BigInteger tVB;
  21. private BigInteger xplusnVB;
  22. private BigInteger dplusnVB;
  23. private BigInteger xplusnsquaredVB;
  24. private BigInteger dplusnsquaredVB;
  25. private BigInteger uVB;
  26. private BigInteger bignVB;
  27. private BigInteger naVB;
  28. private boolean oddxplusnsquaredVB;
  29. private String descriptionV;
  30.  
  31. public Element(String aSend, String bSend){
  32. this(new BigInteger(aSend), new BigInteger(bSend));
  33. }
  34.  
  35. public Element(String aSend, String bSend, String fSend){
  36. this(new BigInteger(aSend), new BigInteger(bSend), new BigInteger(fSend));
  37. }
  38.  
  39. public Element(BigInteger aSend, BigInteger bSend){
  40. aVB = aSend;
  41. bVB = bSend;
  42. cVB = aVB.multiply(bVB);
  43. dVB = sqrt(cVB);
  44. eVB = cVB.subtract(dVB.multiply(dVB));
  45. fVB = eVB.subtract((dVB.multiply(two)).add(one));
  46. if(aSend.compareTo(zero) < 0 && bSend.compareTo(zero) < 0){
  47. nVB = ((aVB.add(bVB)).divide(two)).add(dVB);
  48. } else {
  49. nVB = ((aVB.add(bVB)).divide(two)).subtract(dVB);
  50. }
  51. xVB = dVB.subtract(aVB);
  52. tVB = zero;
  53. if((eVB.mod(two)).equals(zero)){
  54. tVB = (xVB.add(two)).divide(two);
  55. } else {
  56. tVB = (xVB.add(one)).divide(two);
  57. }
  58. iVB = nVB.add(dVB);
  59. jVB = bVB.subtract(iVB);
  60. xplusnVB = xVB.add(nVB);
  61. dplusnVB = dVB.add(nVB);
  62. xplusnsquaredVB = xplusnVB.multiply(xplusnVB);
  63. dplusnsquaredVB = dplusnVB.multiply(dplusnVB);
  64. uVB = zero;
  65. oddxplusnsquaredVB = true;
  66. if((xplusnsquaredVB.mod(two)).equals(two)){
  67. oddxplusnsquaredVB = false;
  68. uVB = xplusnVB.divide(two);
  69. } else {
  70. uVB = (xplusnVB.subtract(one)).divide(two);
  71. }
  72. bignVB = ((cVB.add(one)).divide(two)).subtract(dVB);
  73. descriptionV = "("+eVB+","+nVB+","+tVB+") = {"+eVB+":"+nVB+":"+dVB+":"+xVB+":"+aVB+":"+bVB+"}, f="+fVB+", c="+cVB+", u="+uVB+", i="+iVB+", j="+jVB;
  74. }
  75.  
  76. public Element(BigInteger aSend, BigInteger bSend, BigInteger fSend){
  77. aVB = aSend;
  78. bVB = bSend;
  79. cVB = aVB.multiply(bVB);
  80. dVB = (sqrt(cVB)).add(one);
  81. eVB = fSend;
  82. fVB = ((dVB.multiply(two)).add(one)).subtract(eVB);
  83. nVB = ((aVB.add(bVB)).divide(two)).subtract(dVB);
  84. xVB = dVB.subtract(aVB);
  85. tVB = zero;
  86. if((eVB.mod(two)).equals(zero)){
  87. tVB = (xVB.add(two)).divide(two);
  88. } else {
  89. tVB = (xVB.add(one)).divide(two);
  90. }
  91. iVB = nVB.add(dVB);
  92. jVB = bVB.subtract(iVB);
  93. xplusnVB = xVB.add(nVB);
  94. dplusnVB = dVB.add(nVB);
  95. xplusnsquaredVB = xplusnVB.multiply(xplusnVB);
  96. dplusnsquaredVB = dplusnVB.multiply(dplusnVB);
  97. uVB = zero;
  98. oddxplusnsquaredVB = true;
  99. if((xplusnsquaredVB.mod(two)).equals(zero)){
  100. oddxplusnsquaredVB = false;
  101. uVB = xplusnVB.divide(two);
  102. } else {
  103. uVB = (xplusnVB.subtract(one)).divide(two);
  104. }
  105. bignVB = ((cVB.add(one)).divide(two)).subtract(dVB);
  106. descriptionV = "("+eVB+","+nVB+","+tVB+") = {"+eVB+":"+nVB+":"+dVB+":"+xVB+":"+aVB+":"+bVB+"}, f="+fVB+", c="+cVB+", u="+uVB+", i="+iVB+", j="+jVB;
  107. }
  108.  
  109. public static BigInteger sqrt(BigInteger x) {
  110. if(x.compareTo(zero) == -1){
  111. x = x.multiply(minusOne);
  112. }
  113. if(x.equals(zero)){
  114. return zero;
  115. }
  116. BigInteger div = zero.setBit(x.bitLength()/2);
  117. BigInteger div2 = div;
  118. BigInteger returnvalue = zero;
  119. for(;;) {
  120. BigInteger y = div.add(x.divide(div)).shiftRight(1);
  121. if (y.equals(div) || y.equals(div2)){
  122. returnvalue = y;
  123. break;
  124. }
  125. div2 = div;
  126. div = y;
  127. }
  128.  
  129. BigInteger testsquare = returnvalue.multiply(returnvalue);
  130. BigInteger testp1square = (returnvalue.add(one)).multiply(returnvalue.add(one));
  131. if((testsquare.equals(x)) || (((testsquare.compareTo(x)) == -1) && ((testp1square.compareTo(x)) == 1))){
  132. return returnvalue;
  133. } else {
  134. return returnvalue.subtract(one);
  135. }
  136. }
  137.  
  138. public BigInteger a(){
  139. return aVB;
  140. }
  141.  
  142. public BigInteger b(){
  143. return bVB;
  144. }
  145.  
  146. public BigInteger c(){
  147. return cVB;
  148. }
  149.  
  150. public BigInteger d(){
  151. return dVB;
  152. }
  153.  
  154. public BigInteger e(){
  155. return eVB;
  156. }
  157.  
  158. public BigInteger f(){
  159. return fVB;
  160. }
  161.  
  162. public BigInteger n(){
  163. return nVB;
  164. }
  165.  
  166. public BigInteger x(){
  167. return xVB;
  168. }
  169.  
  170. public BigInteger t(){
  171. return tVB;
  172. }
  173.  
  174. public BigInteger i(){
  175. return iVB;
  176. }
  177.  
  178. public BigInteger j(){
  179. return jVB;
  180. }
  181.  
  182. public BigInteger xplusn(){
  183. return xplusnVB;
  184. }
  185.  
  186. public BigInteger dplusn(){
  187. return dplusnVB;
  188. }
  189.  
  190. public BigInteger xplusnsquared(){
  191. return xplusnsquaredVB;
  192. }
  193.  
  194. public BigInteger dplusnsquared(){
  195. return dplusnsquaredVB;
  196. }
  197.  
  198. public BigInteger u(){
  199. return uVB;
  200. }
  201.  
  202. public BigInteger bign(){
  203. return bignVB;
  204. }
  205.  
  206. public boolean oddxplusnsquared(){
  207. return oddxplusnsquaredVB;
  208. }
  209.  
  210. public void print(){
  211. System.out.println(descriptionV);
  212. }
  213.  
  214. public String description(){
  215. return descriptionV;
  216. }
  217. }
Advertisement
Add Comment
Please, Sign In to add comment