sqrt (x*x) == x が真となることを前提としたプログラムを見たのですが、
真となるものですか。

sqrt をニュートン法で誤差が十分小さくなったら終了とし、
誤差がでる処理系があるのではないかと思いまして。
ちなみに、いくつか実験したら真でした。

#include <stdio.h>
#include <math.h>

#define test(x) printf ("%s " #x "\n", sqrt (x*x) == x ? "t" : "f")

int main (void)
{
  test (3.0);
  test (3);
  test (123.456);

  return 0;
}