diff options
author | Alberto Ruiz <aruiz@um.es> | 2010-10-19 18:03:46 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2010-10-19 18:03:46 +0000 |
commit | ceb049de0898a2cc58fac8191a049e65bad7a2f6 (patch) | |
tree | de0444d67ed3ee0d2c6d825beaf7336f151111b1 /packages/special/lib/Numeric/GSL/Special/auto.hs | |
parent | bedc8781b1d4e1d684d2c259f3accf66e8c9c9cc (diff) |
complex dilogarithm
Diffstat (limited to 'packages/special/lib/Numeric/GSL/Special/auto.hs')
-rw-r--r-- | packages/special/lib/Numeric/GSL/Special/auto.hs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/packages/special/lib/Numeric/GSL/Special/auto.hs b/packages/special/lib/Numeric/GSL/Special/auto.hs index b46e6c6..b6276b2 100644 --- a/packages/special/lib/Numeric/GSL/Special/auto.hs +++ b/packages/special/lib/Numeric/GSL/Special/auto.hs | |||
@@ -31,7 +31,8 @@ fixlong (x:xs) = x : fixlong xs | |||
31 | 31 | ||
32 | 32 | ||
33 | safe (Header _ _ args) = all ok args | 33 | safe (Header _ _ args) = all ok args |
34 | || all ok (init args) && kn (last args) | 34 | || all ok (init args) && kn (last args) |
35 | || length args >= 2 && all ok (init (init args)) && kn (last args) && kn (last (init args)) | ||
35 | where ok ((Normal s),_) | s `elem` ["double","float","int","gsl_mode_t"] = True | 36 | where ok ((Normal s),_) | s `elem` ["double","float","int","gsl_mode_t"] = True |
36 | ok _ = False | 37 | ok _ = False |
37 | kn ((Pointer "gsl_sf_result"),_) = True | 38 | kn ((Pointer "gsl_sf_result"),_) = True |
@@ -206,7 +207,9 @@ showFull hc h@(Header t n args) = -- "\n-- | wrapper for "++showC h | |||
206 | fixmd1 = rep ("Gsl_mode_t","Precision") | 207 | fixmd1 = rep ("Gsl_mode_t","Precision") |
207 | fixmd2 = rep ("mode"," (precCode mode)") | 208 | fixmd2 = rep ("mode"," (precCode mode)") |
208 | 209 | ||
209 | boiler h@(Header t n args) | fst (last args) == Pointer "gsl_sf_result" = boilerResult h | 210 | boiler h@(Header t n args) | fst (last args) == Pointer "gsl_sf_result" |
211 | && fst (last (init args)) == Pointer "gsl_sf_result" = boiler2Results h | ||
212 | | fst (last args) == Pointer "gsl_sf_result" = boilerResult h | ||
210 | | fst (last args) == Pointer "gsl_sf_result_e10" = boilerResultE10 h | 213 | | fst (last args) == Pointer "gsl_sf_result_e10" = boilerResultE10 h |
211 | | any isMode args = boilerMode h | 214 | | any isMode args = boilerMode h |
212 | | otherwise = boilerBasic h | 215 | | otherwise = boilerBasic h |
@@ -223,6 +226,11 @@ boilerResult h@(Header t n args) = | |||
223 | hName n ++ " "++ initArgs args ++ | 226 | hName n ++ " "++ initArgs args ++ |
224 | " = createSFR \""++ hName n ++"\" $ " ++ n ++ " "++ (fixmd2 $ initArgs args) | 227 | " = createSFR \""++ hName n ++"\" $ " ++ n ++ " "++ (fixmd2 $ initArgs args) |
225 | 228 | ||
229 | boiler2Results h@(Header t n args) = | ||
230 | hName n++" :: "++ (fixmd1 $ concat $ intersperse" -> "$ map showHa (init (init args))) ++" -> " ++ "((Double,Double),(Double,Double))\n" ++ | ||
231 | hName n ++ " "++ init2Args args ++ | ||
232 | " = create2SFR \""++ hName n ++"\" $ " ++ n ++ " "++ (fixmd2 $ init2Args args) | ||
233 | |||
226 | boilerResultE10 h@(Header t n args) = | 234 | boilerResultE10 h@(Header t n args) = |
227 | hName n++" :: "++ (fixmd1 $ concat $ intersperse" -> "$ map showHa (init args)) ++" -> " ++ "(Double,Int,Double)\n" ++ | 235 | hName n++" :: "++ (fixmd1 $ concat $ intersperse" -> "$ map showHa (init args)) ++" -> " ++ "(Double,Int,Double)\n" ++ |
228 | hName n ++ " "++ initArgs args ++ | 236 | hName n ++ " "++ initArgs args ++ |
@@ -241,4 +249,6 @@ cVar (v:vs) | isUpper v = toLower v : v : vs | |||
241 | | otherwise = v:vs | 249 | | otherwise = v:vs |
242 | 250 | ||
243 | allArgs args = unwords (map (cVar.snd) args) | 251 | allArgs args = unwords (map (cVar.snd) args) |
244 | initArgs args = unwords (map (cVar.snd) (init args)) \ No newline at end of file | 252 | initArgs args = unwords (map (cVar.snd) (init args)) |
253 | init2Args args = unwords (map (cVar.snd) (init $ init args)) | ||
254 | |||