Fast implementation/approximation of pow() function in C/C++

I m looking for a faster implementation or good a approximation of functions provided by cmath.

I need to speed up the following functions

  1. pow(x,y)
  2. exp(z*pow(x,y))

where z<0. x is from (-1.0,1.0) and y is from (0.0, 5.0)

Answers


Here are some approxmiations:

If the above approximation for pow is not good enough, you can still try to replace it with exponential functions, depending on your machine and compiler this might be faster:

  1. x^y = e^(y*ln(x))
  2. And the result: e^(z * x^y) = e^(z * e^(y*ln(x)))

Another trick is when some parameters of the formula do not change often. So if e.g. x and y are mostly constant, you can precalculate x^y and reuse this.


What are the possible values of x and y? If they are within reasonable bounds, building some lookup tables could help.


I recommend the routines in the book "Math Toolkit for Real-Time Programming" by Jack W. Crenshaw.

You might also want to post some of your code to show how you are calling these functions, as there may be some other higher level optimisation possibilities that are not apparent from the description given so far.


Need Your Help

Defining Default Open Behavior in Sharepoint 2010 + Office Web Apps with Custom Webpart

sharepoint web-applications ms-office

I am running Sharepoint 2010 with Office Web Apps. By default, any document of type .doc, .ppt, etc... will open within the browser from the document library. This is fine, however I am using a web

Codeignigniter Tank Auth…cookies?

codeigniter session cookies tankauth

I am wondering about Tank Auth for Codeigniter, does it use cookies to store login details? I have been instructed not to use cookies on a new project.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.