OSDN Git Service

[Refactor] #37353 mysqrt() を z-util.c へ移動。 / Move mysqrt() to z-util.c.
[hengband/hengband.git] / src / z-util.c
index d11e840..d81f6f9 100644 (file)
@@ -282,3 +282,45 @@ int count_bits(BIT_FLAGS x)
 
        return (n);
 }
+
+/*!
+ * @brief 平方根を切り捨て整数で返す
+ * @param n 数値
+ * @return 平方根
+ */
+int mysqrt(int n)
+{
+       int tmp = n >> 1;
+       int tasu = 10;
+       int kaeriti = 1;
+
+       if (!tmp)
+       {
+               if (n) return 1;
+               else return 0;
+       }
+
+       while (tmp)
+       {
+               if ((n / tmp) < tmp)
+               {
+                       tmp >>= 1;
+               }
+               else break;
+       }
+       kaeriti = tmp;
+       while (tasu)
+       {
+               if ((n / tmp) < tmp)
+               {
+                       tasu--;
+                       tmp = kaeriti;
+               }
+               else
+               {
+                       kaeriti = tmp;
+                       tmp += tasu;
+               }
+       }
+       return kaeriti;
+}
\ No newline at end of file