Explorar el Código

faster log2 and pow2 in FractalZoomWidget

Nicolas Winkler hace 4 años
padre
commit
50861dd68b
Se han modificado 1 ficheros con 8 adiciones y 2 borrados
  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;
 }