Jelajahi Sumber

faster log2 and pow2 in FractalZoomWidget

Nicolas Winkler 4 tahun lalu
induk
melakukan
50861dd68b
1 mengubah file dengan 8 tambahan dan 2 penghapusan
  1. 8 2
      FractalZoomWidget.cpp

+ 8 - 2
FractalZoomWidget.cpp

@@ -173,13 +173,19 @@ const mnd::MandelViewport& FractalZoomWidget::getViewport(void) const
 
 int FractalZoomWidget::getLevel(const mnd::Real& dpp) const
 {
-    return int(mnd::log2(dpp / chunkSize));
+    int exponent = (dpp / chunkSize).backend().exponent();
+    // replace log2 with cheaper operation
+    //return int(mnd::log2(dpp / chunkSize));
+    return exponent + 1;
 }
 
 
 mnd::Real FractalZoomWidget::getDpp(int level) const
 {
-    return mnd::pow(mnd::Real(2), mnd::Real(level)) * chunkSize;
+    mnd::Real a = 1;
+    a.backend().exponent() += level;
+    return a * chunkSize;
+    // return mnd::pow(mnd::Real(2), mnd::Real(level)) * chunkSize;
 }