llvm/llvm-project

basic properties of floor and ceiling function

Open

#76.438 aberto em 27 de dez. de 2023

Ver no GitHub
 (12 comments) (0 reactions) (1 assignee)C++ (10.782 forks)batch import
floating-pointgood first issuellvm:optimizationsmissed-optimization

Métricas do repositório

Stars
 (26.378 stars)
Métricas de merge de PR
 (Mesclagem média 1d 2h) (1.000 fundiu PRs em 30d)

Description

There are other formulas that hold, but I'll list the basic ones. https://alive2.llvm.org/ce/z/dQgZ84

If I understand correctly, these transformations require nnan flag.

Original functions:

#include <cmath>

bool src1(float x)
{
  return std::floor(x) <= x;
}

bool src2(float x)
{
  return x <= std::ceil(x);
}

bool src3(float x)
{
  return std::ceil(x) == -std::floor(-x);
}

bool src4(float x)
{
  return std::floor(x) == -std::ceil(-x);
}

Guia do colaborador