From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b5627b980414da76,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 1995-03-11 09:45:43 PST Path: bga.com!news.sprintlink.net!pipex!oleane!jussieu.fr!nef.ens.fr!sands From: sands@clipper.ens.fr (Duncan Sands) Newsgroups: comp.lang.ada Subject: Higher precision and generics Date: 11 Mar 1995 17:41:03 GMT Organization: Ecole Normale Superieure, PARIS, France Distribution: world Message-ID: <3jsnbf$ido@nef.ens.fr> NNTP-Posting-Host: drakkar.ens.fr Date: 1995-03-11T17:41:03+00:00 List-Id: I am writing a package of matrix routines (in Ada!) in which some intermediate results should be calculated in higher precision than normal. The type for normal precision is called Real and is a generic parameter of my package: generic type Real is digits <>; package Matrix_Stuff is ... end; In the body I would like to be able to declare Double to be a higher precision floating point type, something like: package body Matrix_Stuff is type Double is digits 2*Real'Digits; ... end; Unfortunately, this does not compile: apparently formal types like Real are not considered static, so Real'Digits is not considered static, and only static expressions are allowed in a "type X is digits expression" declaration. (If I write "type Double is digits 2*Float'Digits" then it compiles fine). What can I do to get type Double to be of higher precision than Real? Can anyone please help? And does anyone know why formal types like Real are not considered static? Thanks a lot, Duncan Sands.