exponential errors

anonymouse anony at mouse.com
Mon May 8 03:22:02 UTC 2023


I'm not the sharpest tool in the shed so I would really 
appreciate some assistance clarifying what's going on here and 
how to accomplish this seemingly simple (to me) goal.

I'd like to raise a floating point value ```d``` to some exponent 
```n```.

Never thought I'd have to do this but, in Python:

```Python
pow(1/2, 3)
```
output:
```
  0.125
```
in D:

```D
import std.stdio;
void main()
{
   writeln((1/2)^^3);
}
```
Compile Time Error:
```
hist.d(40): Error: undefined identifier `pow` in module `std.math`
```
Say what? I don't remember ever calling `import std.math : pow`. 
Why am I getting this error?

Okay, whatever, just import the damn thing

```D
import std.stdio;
void main()
{
   writeln((1/2)^^3);
   import std.math.exponential: pow;  // placement intentional, 
ran into this error
                                      // by accident while trying 
to understand the
                                      // error above and the one 
to come next at the
                                      // same time
}
```
Compile Time Error:
```
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(47): Error: version `InlineAsm_X86_Any` defined after use
```
Come again? Okay, good to know I guess. Let's get it right this 
time.

```D
import std.stdio;
void main()
{
   import std.math.exponential: pow;
   writeln((1/2)^^3);
   // I was actually trying to use pow() here directly
   // which produced the same errors as below when I ran into the
   // previous error
}
```

Compile Time Error:
```
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3791): Error: number `0x0.8p-126f` is not representable as a `float`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3791):        https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3791): Error: number `0x0.8p-126f` is not representable as a `float`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3791):        https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3793): Error: number `0x0.555556p-126f` is not representable as a `float`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3793):        https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3793): Error: number `0x0.555556p-126f` is not representable as a `float`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3793):        https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3804): Error: number `0x0.8p-1022` is not representable as a `double`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3804):        `real` literals can be written using the `L` suffix. https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3804): Error: number `0x0.8p-1022` is not representable as a `double`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3804):        `real` literals can be written using the `L` suffix. https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3806): Error: number `0x0.5555555555555p-1022` is not representable as a `double`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3806):        `real` literals can be written using the `L` suffix. https://dlang.org/spec/lex.html#floatliteral
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3806): Error: number `0x0.5555555555555p-1022` is not representable as a `double`
     
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/exponential.d(3806):        `real` literals can be written using the `L` suffix. https://dlang.org/spec/lex.html#floatliteral
```
I'm sorry, what am I missing? How do I accomplish this task?

-- anonymouse


More information about the Digitalmars-d-announce mailing list