RE: Can Anyone Help With This?
- To: mathgroup at smc.vnet.net
- Subject: [mg29810] RE: [mg29795] Can Anyone Help With This?
- From: "Annetts, David (DEM, North Ryde)" <David.Annetts at syd.dem.csiro.au>
- Date: Wed, 11 Jul 2001 01:26:59 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Wilson,
> I was wondering if it is possible to turn on/off a verbose
> mode of printing when
> running modules in Mathematica.
>
> I have the following segment that I'd like to code, but with
> the ability to turn
> on/off printing of intermediate results.
>
> Here is the algorithm (for example).
>
> Step 0: N = random odd number.
> Step 1: K = N+1, P = 1, Q = (1-D)/4, D = 1-4Q
> Step 2: Let Kr Kr-1 ... K0 be the binary expansion of K.
> Step 3: Set U = 1 and V = P.
> Step 4: For i = r-1 to 0,
> Set (U, V) = (UV mod N, (V^2 + DU^2)/2 mod N)
> If Ki = 1, then also set
> (U, V) = ( (PU +V)/2 mod N, (PV + DU)/2 mod N)
> Step 5: Uk = U and Vk = V
>
> Is it possible to turn on/off the intermediate results of (U, V)?
The obvious way is to modularise your algorithm and ensure that the Module
takes a parameter which controls what is printed. For example, something
like
alg[..., __opts] := Module[
{},
PrintLevel = Verbose /. {opts} /. Options[alg];
(* do something with U/V *)
If[PrintLevel == "Partial", Print[some stuff]];
If[PrintLevel == "All", Print[some more stuff stuff]];
Return[];
];
To make this work, you need to define
Options[alg, PrintLevel->None];
and load "Utilities`FilterOptions`".
Regards,
Dave.
--------------------------------------------------------------
David Annetts, EM Modelling Analyst, CSIRO DEM, North Ryde
Tel: (+612) 9490 5416
Fax: (+612) 9490 5467 David.Annetts at dem.csiro.au
Include "usual_disclaimers"
--------------------------------------------------------------