Boost logo

Boost Users :

Subject: Re: [Boost-users] About naming of integer log in base 2
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2010-07-15 07:22:44



From: boost-users-bounces_at_[hidden] [mailto:boost-users-bounces_at_[hidden]] On Behalf Of Murilo Adriano
Sent: Wednesday, July 14, 2010 9:04 PM
To: boost-users_at_[hidden]
Subject: [Boost-users] About naming of integer log in base 2


Hi all,


I implemented a function [0] wich computes the logarithm in base two of integers and want to know what naming is most



or simply



[0] -


My instinct is for log2 so it might be specialised for floating point too.


Glancing at your code, I note you don't explicitly check that type T is integer (but perhaps is_signed does that?)


But I feel that
 * If `value` is equal to 0, the value returned is undefined


may be evil in some peoples opinion.


Of course it is always a vexed question what to do for the corner cases like this. I am sure that this sort of issue
will raise its ugly head for other functions.


You might like to consider making problem cases 'policy controlled'.


In the Boost.Math package John Maddock went to the trouble of providing a way of letting users controlling what happens
for cases like this.


(He retrofitted policies, so you don't have to do it immediately - but doing it will focus your mind on the possible
corner cases).


If you read the math docs, perhaps the pdf at


or the download from source,


and see the section on Policies you will see what it being suggested, and some examples.


You might return zero, or ? or throw an exception?


You can consult and see if there is a consensus on the default policy.


At least it may reduce the discussion (Boosters are really good at that ;-) on what *should* happen, if you can say "You
*can* make it do what you want."





Paul A. Bristow
Prizet Farmhouse
Kendal, UK   LA8 8AB
+44 1539 561830, mobile +44 7714330204

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at