소스 검색

faster log2 and pow2 in FractalZoomWidget

Nicolas Winkler 4 년 전
부모
커밋
50861dd68b
1개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  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;
 }