Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-325

[EDG eccp] <cmath> missing float and long double overloads

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1
    • 4.2.2
    • 26. Numerics
    • None
    • EDG eccp/Solaris

    • Compiler Error

    Description

      C++ adds float and long double overloads of all the C math functions in <cmath> (and the C++ version of <math.h>). Our strict implementation of <cmath> is missing all of them:

      $ cat t.cpp && make t && ./t
      #include <cmath>

      extern "C" {
      typedef float cfunf_t (float);
      typedef long double cfunl_t (long double);
      int printf (const char*, ...);
      }

      typedef float cxxfunf_t (float);
      typedef long double cxxfunl_t (long double);

      int testf (...)

      { return 0; }
      int testf (cfunf_t*) { return 1; }
      int testf (cxxfunf_t*) { return 2; }

      int testl (...) { return 0; }

      int testl (cfunl_t*)

      { return 1; }

      int testl (cxxfunl_t*)

      { return 2; }

      extern "C" int printf (const char*, ...);

      int main ()
      {
      #define TESTF(fun) \
      if (!testf (std::fun)) printf ("std::%s(float) not declared\n", #fun);

      TESTF (acos);
      TESTF (asin);
      TESTF (atan);
      TESTF (cos);
      TESTF (sin);
      TESTF (tan);
      TESTF (cosh);
      TESTF (sinh);
      TESTF (tanh);
      TESTF (exp);
      TESTF (log);
      TESTF (log10);
      TESTF (sqrt);
      TESTF (ceil);
      TESTF (fabs);
      TESTF (floor);

      #define TESTL(fun) \
      if (!testl (std::fun)) printf ("std::%s(long double) not declared\n", #fun);

      TESTL (acos);
      TESTL (asin);
      TESTL (atan);
      TESTL (cos);
      TESTL (sin);
      TESTL (tan);
      TESTL (cosh);
      TESTL (sinh);
      TESTL (tanh);
      TESTL (exp);
      TESTL (log);
      TESTL (log10);
      TESTL (sqrt);
      TESTL (ceil);
      TESTL (fabs);
      TESTL (floor);
      }

      eccp -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include -I/build/sebor/eccp-3.8-11s/include -I/build/sebor/dev/stdlib/include/ansi -I/build/sebor/PlumHall/lvs06a/conform -I/build/sebor/PlumHall/lvs06a/dst.3 -A -x --template_directory=/build/sebor/eccp-3.8-11s/lib -g --display_error_number --remarks --diag_suppress 193,236,340,401,261,479,487,678,679,815 --diag_suppress 177,381,191,68,550,611,997,549 t.cpp
      eccp t.o -o t --template_directory=/build/sebor/eccp-3.8-11s/lib -L/build/sebor/eccp-3.8-11s/lib -lstd11s -lm
      std::acos(float) not declared
      std::asin(float) not declared
      std::atan(float) not declared
      std::cos(float) not declared
      std::sin(float) not declared
      std::tan(float) not declared
      std::cosh(float) not declared
      std::sinh(float) not declared
      std::tanh(float) not declared
      std::exp(float) not declared
      std::log(float) not declared
      std::log10(float) not declared
      std::sqrt(float) not declared
      std::ceil(float) not declared
      std::fabs(float) not declared
      std::floor(float) not declared
      std::acos(long double) not declared
      std::asin(long double) not declared
      std::atan(long double) not declared
      std::cos(long double) not declared
      std::sin(long double) not declared
      std::tan(long double) not declared
      std::cosh(long double) not declared
      std::sinh(long double) not declared
      std::tanh(long double) not declared
      std::exp(long double) not declared
      std::log(long double) not declared
      std::log10(long double) not declared
      std::sqrt(long double) not declared
      std::ceil(long double) not declared
      std::fabs(long double) not declared
      std::floor(long double) not declared

      Attachments

        Activity

          People

            Unassigned Unassigned
            sebor Martin Sebor
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 3h
                3h
                Remaining:
                Remaining Estimate - 3h
                3h
                Logged:
                Time Spent - Not Specified
                Not Specified