~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to ansi-tests/isqrt.lsp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
;-*- Mode:     Lisp -*-
 
2
;;;; Author:   Paul Dietz
 
3
;;;; Created:  Sat Sep  6 15:40:09 2003
 
4
;;;; Contains: Tests of ISQRT
 
5
 
 
6
(in-package :cl-test)
 
7
 
 
8
(compile-and-load "numbers-aux.lsp")
 
9
 
 
10
;;; Error tests
 
11
 
 
12
(deftest isqrt.error.1
 
13
  (signals-error (isqrt) program-error)
 
14
  t)
 
15
 
 
16
(deftest isqrt.error.2
 
17
  (signals-error (isqrt 0 0) program-error)
 
18
  t)
 
19
 
 
20
(deftest isqrt.error.3
 
21
  (signals-error (isqrt 0 nil) program-error)
 
22
  t)
 
23
 
 
24
(deftest isqrt.error.4
 
25
  (signals-error (isqrt 0 0 0) program-error)
 
26
  t)
 
27
 
 
28
(deftest isqrt.error.5
 
29
  (loop for x in *mini-universe*
 
30
        unless (or (and (integerp x) (>= x 0))
 
31
                   (eval `(signals-error (isqrt ',x) type-error)))
 
32
        collect x)
 
33
  nil)
 
34
 
 
35
;;; Non-error tests
 
36
 
 
37
(deftest isqrt.1
 
38
  (loop for i from 0 to 10000
 
39
        for i2 = (* i i)
 
40
        for s = (isqrt i2)
 
41
        unless (eql s i)
 
42
        collect i)
 
43
  nil)
 
44
 
 
45
(deftest isqrt.2
 
46
  (loop for i = (random-from-interval most-positive-fixnum 0)
 
47
        for s = (isqrt i)
 
48
        repeat 1000
 
49
        unless (and (integerp s)
 
50
                    (>= s 0)
 
51
                    (<= (* s s) i)
 
52
                    (> (* (1+ s) (1+ s)) i))
 
53
        collect (list i s))
 
54
  nil)
 
55
 
 
56
(deftest isqrt.3
 
57
  (loop for i = (random-from-interval 1000000000000000 0)
 
58
        for s = (isqrt i)
 
59
        repeat 1000
 
60
        unless (and (integerp s)
 
61
                    (>= s 0)
 
62
                    (<= (* s s) i)
 
63
                    (> (* (1+ s) (1+ s)) i))
 
64
        collect (list i s))
 
65
  nil)