46        if(rhs->get_string() != 
"")
 
   49                    << 
"the number representing the power cannot be a dimension (" 
   51                    << 
"); it has to be unitless." 
   57    bool check_dimension(
false);
 
   62        result->set_integer(
static_cast<integer_t>(pow(lhs->get_integer(), rhs->get_integer())));
 
   63        check_dimension = 
true;
 
   68        result->set_decimal_number(pow(lhs->get_integer(), rhs->get_decimal_number()));
 
   69        check_dimension = 
true;
 
   74        result->set_decimal_number(pow(lhs->get_decimal_number(), rhs->get_integer()));
 
   75        check_dimension = 
true;
 
   80        result->set_decimal_number(pow(lhs->get_decimal_number(), rhs->get_decimal_number()));
 
   81        check_dimension = 
true;
 
   86        result->set_decimal_number(pow(lhs->get_decimal_number(), rhs->get_integer()));
 
   91        result->set_decimal_number(pow(lhs->get_decimal_number(), rhs->get_decimal_number()));
 
   96                << 
"incompatible types between " 
  100                << 
" for operator '**'." 
  107    && lhs->get_string() != 
"")
 
  113            the_power = rhs->get_integer();
 
  120#pragma GCC diagnostic push 
  121#pragma GCC diagnostic ignored "-Wfloat-equal" 
  122            if(fractional_part != 0.0)
 
  123#pragma GCC diagnostic pop 
  128                        << 
"a number with a dimension only supports integers as their power (i.e. 3px ** 2 is fine, 3px ** 2.1 is not supported)." 
  132            the_power = 
static_cast<integer_t>(integral_part);
 
  137                    << 
"a number with a dimension power zero cannot be calculated (i.e. 3px ** 0 = 1 what?)." 
  143        if(labs(the_power) > 100)
 
  146                    << 
"a number with a dimension power 101 or more would generate a very large string so we refuse it at this time. You may use unitless numbers instead." 
  167        the_power = labs(the_power);
 
  168        for(
integer_t idx(0); idx < the_power; ++idx)
 
  170            for(
auto d : org_dividend)
 
  172                dividend.push_back(d);
 
  174            for(
auto d : org_divisor)
 
  176                divisor.push_back(d);