00001
00005 package edu.mit.csail.sdg.squander.examples.numbers;
00006
00007 import edu.mit.csail.sdg.annotations.SpecField;
00008
00009 @SpecField({
00010 "s : int from this.s1 | this.s = this.s1",
00011 "r : int from this.r1 | this.r = this.r1",
00012 "q : int from this.q1 | this.q = this.q1"
00013 })
00014
00015 public class ImperativeSqRoot extends MixedSqRoot {
00016
00017
00018
00019
00020
00021 private final int s1;
00022 private int r1;
00023 private int q1;
00024
00025 public ImperativeSqRoot(int s) {
00026 super();
00027 this.s1 = s;
00028 this.r1 = 0;
00029 this.q1 = s;
00030 }
00031
00032 @Override public int getS() { return s1; }
00033 @Override public int getQ() { return q1; }
00034 @Override public int getR() { return r1; }
00035
00036 @Override protected void setQ(int q) { this.q1 = q; }
00037 @Override protected void setR(int r) { this.r1 = r; }
00038
00039 @Override
00040 protected int findP() {
00041
00042 return (r1 + q1) >>> 1;
00043 }
00044
00045 @Override
00046 protected int findQ(int p) {
00047 q1 = p;
00048 return q1;
00049 }
00050
00051 @Override
00052 protected int findR(int p) {
00053 r1 = p;
00054 return r1;
00055 }
00056
00057 }