TIP 299: Add isqrt() Math Function

Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2017 Conference, Houston/TX, US, Oct 16-20
Send your abstracts to tclconference@googlegroups.com
by Aug 21.
Author:         Kevin B. Kenny <kennykb@acm.org>
State:          Final
Type:           Project
Vote:           Done
Created:        24-Nov-2006
Tcl-Version:    8.5
Keywords:	Tcl, expression, integer, square root


This TIP proposes a new expr math function isqrt().


With the advent of large integers, Tcl supports taking the square roots of arguments that lie outside the native floating-point range of the machine. The square roots are returned as floating point numbers if possible. This behaviour is correct when floating-point calculations are intended. There are times, however, when an arbitrary-precision square root is wanted. This root cannot be obtained by evaluating entier(sqrt($n)), because sqrt($n) has already lost precision.

Proposed Change

This TIP proposes adding a new math function, isqrt($n), that will return the integer part of the square root of $n to arbitrary precision. The argument $n must be numeric and non-negative; it may be either integer or floating-point.

Reference Implementation

Tcl Feature Request #1602534 contains a complete reference implementation for the isqrt function.


This document has been placed in the public domain.