src/expde/math_lib/math_lib.cc

Go to the documentation of this file.
00001 //    expde: expression templates for partial differential equations.
00002 //    Copyright (C) 2001  Christoph Pflaum
00003 //    This program is free software; you can redistribute it and/or modify
00004 //    it under the terms of the GNU General Public License as published by
00005 //    the Free Software Foundation; either version 2 of the License, or
00006 //    (at your option) any later version.
00007 //
00008 //    This program is distributed in the hope that it will be useful,
00009 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011 //    GNU General Public License for more details.
00012 //
00013 //                 SEE  Notice1.doc made by 
00014 //                 LAWRENCE LIVERMORE NATIONAL LABORATORY
00015 //
00016 
00017 #ifdef COMP_GNUOLD
00018  #include <iostream.h>
00019  #include <fstream.h>
00020 #else
00021  #include <iostream>
00022  #include <fstream>
00023 #endif 
00024 
00025 #include <math.h>
00026 #include "math_lib.h"
00027 
00028 // ------------------------------------------------------------
00029 // math_lib.cc
00030 //
00031 // ------------------------------------------------------------
00032 
00033 
00034 
00036 //   Find next prime 
00038 
00039 double calc_maximal_edge_angle(const D3vector& va,
00040                                const D3vector& vb,
00041                                const D3vector& vc,
00042                                const D3vector& vd) {
00043   return MAX(MAX(max_interior_angel_of_triangle(vb,vc,vd),
00044                  max_interior_angel_of_triangle(va,vc,vb)),
00045              MAX(max_interior_angel_of_triangle(va,vd,vc),
00046                  max_interior_angel_of_triangle(va,vb,vd)));
00047 }
00048 
00049 double calc_maximal_face_angle(const D3vector& v0,
00050                                const D3vector& v1,
00051                                const D3vector& v2,
00052                                const D3vector& v3) {
00053   return MAX(MAX(angle_between_faces(v1,v0,v2,v3),
00054                  angle_between_faces(v2,v0,v3,v1),
00055                  angle_between_faces(v3,v0,v1,v2)),
00056              MAX(angle_between_faces(v0,v2,v1,v3),
00057                  angle_between_faces(v0,v3,v2,v1),
00058                  angle_between_faces(v0,v1,v3,v2)));
00059 }
00060 
00061 
00062 
00064 //   Find next prime 
00066 
00067 int Find_next_prime(int x) {
00068 int primnah;
00069 primnah=x;
00070 if (x>2) primnah=2;
00071 if (x>3) primnah=3;
00072 if (x>5) primnah=5;
00073 if (x>7) primnah=7;
00074 if (x>11) primnah=11;
00075 if (x>13) primnah=13;
00076 if (x>17) primnah=17;
00077 if (x>19) primnah=19;
00078 if (x>23) primnah=23;
00079 if (x>29) primnah=29;
00080 if (x>31) primnah=31;
00081 if (x>37) primnah=37;
00082 if (x>41) primnah=41;
00083 if (x>43) primnah=43;
00084 if (x>47) primnah=47;
00085 if (x>53) primnah=53;
00086 if (x>59) primnah=59;
00087 if (x>61) primnah=61;
00088 if (x>67) primnah=67;
00089 if (x>71) primnah=71;
00090 if (x>73) primnah=73;
00091 if (x>79) primnah=79;
00092 if (x>83) primnah=83;
00093 if (x>89) primnah=89;
00094 if (x>97) primnah=97;
00095 if (x>103) primnah=103;
00096 if (x>109) primnah=109;
00097 if (x>113) primnah=113;
00098 if (x>127) primnah=127;
00099 if (x>131) primnah=131;
00100 if (x>139) primnah=139;
00101 if (x>151) primnah=151;
00102 if (x>157) primnah=157;
00103 if (x>163) primnah=163;
00104 if (x>167) primnah=167;
00105 if (x>173) primnah=173;
00106 if (x>181) primnah=181;
00107 if (x>193) primnah=193;
00108 if (x>199) primnah=199;
00109 if (x>211) primnah=211;
00110 if (x>227) primnah=227;
00111 if (x>233) primnah=233;
00112 if (x>241) primnah=241;
00113 if (x>251) primnah=251;
00114 if (x>257) primnah=257;
00115 if (x>263) primnah=263;
00116 if (x>271) primnah=271;
00117 if (x>281) primnah=281;
00118 if (x>283) primnah=283;
00119 if (x>293) primnah=293;
00120 if (x>313) primnah=313;
00121 if (x>317) primnah=317;
00122 if (x>337) primnah=337;
00123 if (x>353) primnah=353;
00124 if (x>359) primnah=359;
00125 if (x>373) primnah=373;
00126 if (x>383) primnah=383;
00127 if (x>389) primnah=389;
00128 if (x>401) primnah=401;
00129 if (x>409) primnah=409;
00130 if (x>421) primnah=421;
00131 if (x>439) primnah=439;
00132 if (x>449) primnah=449;
00133 if (x>463) primnah=463;
00134 if (x>467) primnah=467;
00135 if (x>487) primnah=487;
00136 if (x>499) primnah=499;
00137 if (x>509) primnah=509;
00138 if (x>523) primnah=523;
00139 if (x>547) primnah=547;
00140 if (x>563) primnah=563;
00141 if (x>577) primnah=577;
00142 if (x>593) primnah=593;
00143 if (x>607) primnah=607;
00144 if (x>619) primnah=619;
00145 if (x>643) primnah=643;
00146 if (x>659) primnah=659;
00147 if (x>673) primnah=673;
00148 if (x>683) primnah=683;
00149 if (x>701) primnah=701;
00150 if (x>719) primnah=719;
00151 if (x>739) primnah=739;
00152 if (x>757) primnah=757;
00153 if (x>773) primnah=773;
00154 if (x>797) primnah=797;
00155 if (x>823) primnah=823;
00156 if (x>839) primnah=839;
00157 if (x>863) primnah=863;
00158 if (x>887) primnah=887;
00159 if (x>919) primnah=919;
00160 if (x>947) primnah=947;
00161 if (x>971) primnah=971;
00162 if (x>991) primnah=991;
00163 if (x>1013) primnah=1013;
00164 if (x>1039) primnah=1039;
00165 if (x>1069) primnah=1069;
00166 if (x>1103) primnah=1103;
00167 if (x>1129) primnah=1129;
00168 if (x>1171) primnah=1171;
00169 if (x>1201) primnah=1201;
00170 if (x>1237) primnah=1237;
00171 if (x>1259) primnah=1259;
00172 if (x>1301) primnah=1301;
00173 if (x>1327) primnah=1327;
00174 if (x>1381) primnah=1381;
00175 if (x>1423) primnah=1423;
00176 if (x>1453) primnah=1453;
00177 if (x>1487) primnah=1487;
00178 if (x>1511) primnah=1511;
00179 if (x>1553) primnah=1553;
00180 if (x>1583) primnah=1583;
00181 if (x>1627) primnah=1627;
00182 if (x>1669) primnah=1669;
00183 if (x>1723) primnah=1723;
00184 if (x>1759) primnah=1759;
00185 if (x>1811) primnah=1811;
00186 if (x>1847) primnah=1847;
00187 if (x>1889) primnah=1889;
00188 if (x>1933) primnah=1933;
00189 if (x>1987) primnah=1987;
00190 if (x>2029) primnah=2029;
00191 if (x>2069) primnah=2069;
00192 if (x>2113) primnah=2113;
00193 if (x>2161) primnah=2161;
00194 if (x>2221) primnah=2221;
00195 if (x>2281) primnah=2281;
00196 if (x>2311) primnah=2311;
00197 if (x>2377) primnah=2377;
00198 if (x>2423) primnah=2423;
00199 if (x>2477) primnah=2477;
00200 if (x>2551) primnah=2551;
00201 if (x>2593) primnah=2593;
00202 if (x>2659) primnah=2659;
00203 if (x>2713) primnah=2713;
00204 if (x>2767) primnah=2767;
00205 if (x>2819) primnah=2819;
00206 if (x>2887) primnah=2887;
00207 if (x>2953) primnah=2953;
00208 if (x>3011) primnah=3011;
00209 if (x>3079) primnah=3079;
00210 if (x>3137) primnah=3137;
00211 if (x>3221) primnah=3221;
00212 if (x>3271) primnah=3271;
00213 if (x>3361) primnah=3361;
00214 if (x>3433) primnah=3433;
00215 if (x>3517) primnah=3517;
00216 if (x>3593) primnah=3593;
00217 if (x>3677) primnah=3677;
00218 if (x>3761) primnah=3761;
00219 if (x>3833) primnah=3833;
00220 if (x>3923) primnah=3923;
00221 if (x>4007) primnah=4007;
00222 if (x>4093) primnah=4093;
00223 if (x>4177) primnah=4177;
00224 if (x>4283) primnah=4283;
00225 if (x>4373) primnah=4373;
00226 if (x>4463) primnah=4463;
00227 if (x>4567) primnah=4567;
00228 if (x>4673) primnah=4673;
00229 if (x>4759) primnah=4759;
00230 if (x>4877) primnah=4877;
00231 if (x>4973) primnah=4973;
00232 if (x>5081) primnah=5081;
00233 if (x>5179) primnah=5179;
00234 if (x>5281) primnah=5281;
00235 if (x>5399) primnah=5399;
00236 if (x>5507) primnah=5507;
00237 if (x>5623) primnah=5623;
00238 if (x>5749) primnah=5749;
00239 if (x>5881) primnah=5881;
00240 if (x>6011) primnah=6011;
00241 if (x>6143) primnah=6143;
00242 if (x>6271) primnah=6271;
00243 if (x>6397) primnah=6397;
00244 if (x>6547) primnah=6547;
00245 if (x>6679) primnah=6679;
00246 if (x>6803) primnah=6803;
00247 if (x>6959) primnah=6959;
00248 if (x>7079) primnah=7079;
00249 if (x>7243) primnah=7243;
00250 if (x>7369) primnah=7369;
00251 if (x>7537) primnah=7537;
00252 if (x>7691) primnah=7691;
00253 if (x>7841) primnah=7841;
00254 if (x>8009) primnah=8009;
00255 if (x>8171) primnah=8171;
00256 if (x>8329) primnah=8329;
00257 if (x>8513) primnah=8513;
00258 if (x>8689) primnah=8689;
00259 if (x>8863) primnah=8863;
00260 if (x>9043) primnah=9043;
00261 if (x>9227) primnah=9227;
00262 if (x>9421) primnah=9421;
00263 if (x>9619) primnah=9619;
00264 if (x>9811) primnah=9811;
00265 if (x>10009) primnah=10009;
00266 if (x>10223) primnah=10223;
00267 if (x>10433) primnah=10433;
00268 if (x>10657) primnah=10657;
00269 if (x>10867) primnah=10867;
00270 if (x>11093) primnah=11093;
00271 if (x>11329) primnah=11329;
00272 if (x>11551) primnah=11551;
00273 if (x>11807) primnah=11807;
00274 if (x>12049) primnah=12049;
00275 if (x>12301) primnah=12301;
00276 if (x>12569) primnah=12569;
00277 if (x>12823) primnah=12823;
00278 if (x>13063) primnah=13063;
00279 if (x>13339) primnah=13339;
00280 if (x>13633) primnah=13633;
00281 if (x>13921) primnah=13921;
00282 if (x>14207) primnah=14207;
00283 if (x>14503) primnah=14503;
00284 if (x>14797) primnah=14797;
00285 if (x>15107) primnah=15107;
00286 if (x>15413) primnah=15413;
00287 if (x>15733) primnah=15733;
00288 if (x>16033) primnah=16033;
00289 if (x>16369) primnah=16369;
00290 if (x>16703) primnah=16703;
00291 if (x>17053) primnah=17053;
00292 if (x>17417) primnah=17417;
00293 if (x>17761) primnah=17761;
00294 if (x>18133) primnah=18133;
00295 if (x>18503) primnah=18503;
00296 if (x>18869) primnah=18869;
00297 if (x>19273) primnah=19273;
00298 if (x>19661) primnah=19661;
00299 if (x>20071) primnah=20071;
00300 if (x>20483) primnah=20483;
00301 if (x>20903) primnah=20903;
00302 if (x>21323) primnah=21323;
00303 if (x>21767) primnah=21767;
00304 if (x>22193) primnah=22193;
00305 if (x>22669) primnah=22669;
00306 if (x>23131) primnah=23131;
00307 if (x>23603) primnah=23603;
00308 if (x>24077) primnah=24077;
00309 if (x>24551) primnah=24551;
00310 if (x>25057) primnah=25057;
00311 if (x>25561) primnah=25561;
00312 if (x>26083) primnah=26083;
00313 if (x>26597) primnah=26597;
00314 if (x>27143) primnah=27143;
00315 if (x>27701) primnah=27701;
00316 if (x>28283) primnah=28283;
00317 if (x>28843) primnah=28843;
00318 if (x>29429) primnah=29429;
00319 if (x>30013) primnah=30013;
00320 if (x>30593) primnah=30593;
00321 if (x>31237) primnah=31237;
00322 if (x>31859) primnah=31859;
00323 if (x>32507) primnah=32507;
00324 if (x>33181) primnah=33181;
00325 if (x>33851) primnah=33851;
00326 if (x>34519) primnah=34519;
00327 if (x>35227) primnah=35227;
00328 if (x>35951) primnah=35951;
00329 if (x>36677) primnah=36677;
00330 if (x>37409) primnah=37409;
00331 if (x>38167) primnah=38167;
00332 if (x>38933) primnah=38933;
00333 if (x>39727) primnah=39727;
00334 if (x>40519) primnah=40519;
00335 if (x>41333) primnah=41333;
00336 if (x>42157) primnah=42157;
00337 if (x>43003) primnah=43003;
00338 if (x>43867) primnah=43867;
00339 if (x>44753) primnah=44753;
00340 if (x>45659) primnah=45659;
00341 if (x>46573) primnah=46573;
00342 if (x>47513) primnah=47513;
00343 if (x>48463) primnah=48463;
00344 if (x>49433) primnah=49433;
00345 if (x>50423) primnah=50423;
00346 if (x>51449) primnah=51449;
00347 if (x>52489) primnah=52489;
00348 if (x>53551) primnah=53551;
00349 if (x>54631) primnah=54631;
00350 if (x>55733) primnah=55733;
00351 if (x>56873) primnah=56873;
00352 if (x>58027) primnah=58027;
00353 if (x>59183) primnah=59183;
00354 if (x>60373) primnah=60373;
00355 if (x>61583) primnah=61583;
00356 if (x>62827) primnah=62827;
00357 if (x>64091) primnah=64091;
00358 if (x>65381) primnah=65381;
00359 if (x>66697) primnah=66697;
00360 if (x>68023) primnah=68023;
00361 if (x>69401) primnah=69401;
00362 if (x>70783) primnah=70783;
00363 if (x>72173) primnah=72173;
00364 if (x>73651) primnah=73651;
00365 if (x>75133) primnah=75133;
00366 if (x>76651) primnah=76651;
00367 if (x>78193) primnah=78193;
00368 if (x>79757) primnah=79757;
00369 if (x>81359) primnah=81359;
00370 if (x>82997) primnah=82997;
00371 if (x>84659) primnah=84659;
00372 if (x>86357) primnah=86357;
00373 if (x>88093) primnah=88093;
00374 if (x>89867) primnah=89867;
00375 if (x>91673) primnah=91673;
00376 if (x>93523) primnah=93523;
00377 if (x>95393) primnah=95393;
00378 if (x>97303) primnah=97303;
00379 if (x>99259) primnah=99259;
00380 if (x>101221) primnah=101221;
00381 if (x>103291) primnah=103291;
00382 if (x>105373) primnah=105373;
00383 if (x>107473) primnah=107473;
00384 if (x>109639) primnah=109639;
00385 if (x>111847) primnah=111847;
00386 if (x>114089) primnah=114089;
00387 if (x>116387) primnah=116387;
00388 if (x>118739) primnah=118739;
00389 if (x>121081) primnah=121081;
00390 if (x>123527) primnah=123527;
00391 if (x>126013) primnah=126013;
00392 if (x>128521) primnah=128521;
00393 if (x>131113) primnah=131113;
00394 if (x>133733) primnah=133733;
00395 if (x>136429) primnah=136429;
00396 if (x>139169) primnah=139169;
00397 if (x>141959) primnah=141959;
00398 if (x>144791) primnah=144791;
00399 if (x>147709) primnah=147709;
00400 if (x>150659) primnah=150659;
00401 if (x>153701) primnah=153701;
00402 if (x>156781) primnah=156781;
00403 if (x>159931) primnah=159931;
00404 if (x>163129) primnah=163129;
00405 if (x>166409) primnah=166409;
00406 if (x>169733) primnah=169733;
00407 if (x>173141) primnah=173141;
00408 if (x>176611) primnah=176611;
00409 if (x>180161) primnah=180161;
00410 if (x>183763) primnah=183763;
00411 if (x>187471) primnah=187471;
00412 if (x>191189) primnah=191189;
00413 if (x>195049) primnah=195049;
00414 if (x>198953) primnah=198953;
00415 if (x>202933) primnah=202933;
00416 if (x>206993) primnah=206993;
00417 if (x>211153) primnah=211153;
00418 if (x>215399) primnah=215399;
00419 if (x>219721) primnah=219721;
00420 if (x>224113) primnah=224113;
00421 if (x>228611) primnah=228611;
00422 if (x>233183) primnah=233183;
00423 if (x>237859) primnah=237859;
00424 if (x>242633) primnah=242633;
00425 if (x>247463) primnah=247463;
00426 if (x>252449) primnah=252449;
00427 if (x>257503) primnah=257503;
00428 if (x>262657) primnah=262657;
00429 if (x>267929) primnah=267929;
00430 if (x>273289) primnah=273289;
00431 if (x>278767) primnah=278767;
00432 if (x>284377) primnah=284377;
00433 if (x>290057) primnah=290057;
00434 if (x>295879) primnah=295879;
00435 if (x>301813) primnah=301813;
00436 if (x>307859) primnah=307859;
00437 if (x>314021) primnah=314021;
00438 if (x>320339) primnah=320339;
00439 if (x>326779) primnah=326779;
00440 if (x>333367) primnah=333367;
00441 if (x>340049) primnah=340049;
00442 if (x>346849) primnah=346849;
00443 if (x>353797) primnah=353797;
00444 if (x>360869) primnah=360869;
00445 if (x>368117) primnah=368117;
00446 if (x>375481) primnah=375481;
00447 if (x>383011) primnah=383011;
00448 if (x>390673) primnah=390673;
00449 if (x>398509) primnah=398509;
00450 if (x>406507) primnah=406507;
00451 if (x>414643) primnah=414643;
00452 if (x>422927) primnah=422927;
00453 if (x>431423) primnah=431423;
00454 if (x>440047) primnah=440047;
00455 if (x>448883) primnah=448883;
00456 if (x>457871) primnah=457871;
00457 if (x>467021) primnah=467021;
00458 if (x>476401) primnah=476401;
00459 if (x>485923) primnah=485923;
00460 if (x>495647) primnah=495647;
00461 if (x>505573) primnah=505573;
00462 if (x>515701) primnah=515701;
00463 if (x>526051) primnah=526051;
00464 if (x>536563) primnah=536563;
00465 if (x>547321) primnah=547321;
00466 if (x>558289) primnah=558289;
00467 if (x>569461) primnah=569461;
00468 if (x>580859) primnah=580859;
00469 if (x>592483) primnah=592483;
00470 if (x>604319) primnah=604319;
00471 if (x>616411) primnah=616411;
00472 if (x>628759) primnah=628759;
00473 if (x>641327) primnah=641327;
00474 if (x>654191) primnah=654191;
00475 if (x>667283) primnah=667283;
00476 if (x>680651) primnah=680651;
00477 if (x>694261) primnah=694261;
00478 if (x>708139) primnah=708139;
00479 if (x>722321) primnah=722321;
00480 if (x>736741) primnah=736741;
00481 if (x>751481) primnah=751481;
00482 if (x>766553) primnah=766553;
00483 if (x>781889) primnah=781889;
00484 if (x>797509) primnah=797509;
00485 if (x>813443) primnah=813443;
00486 if (x>829757) primnah=829757;
00487 if (x>846383) primnah=846383;
00488 if (x>863309) primnah=863309;
00489 if (x>880589) primnah=880589;
00490 if (x>898213) primnah=898213;
00491 if (x>916187) primnah=916187;
00492 if (x>934499) primnah=934499;
00493 if (x>953191) primnah=953191;
00494 if (x>972277) primnah=972277;
00495 if (x>991751) primnah=991751;
00496 if (x>1011601) primnah=1011601;
00497 if (x>1031837) primnah=1031837;
00498 if (x>1052489) primnah=1052489;
00499 if (x>1073573) primnah=1073573;
00500 if (x>1095049) primnah=1095049;
00501 if (x>1116943) primnah=1116943;
00502 if (x>1139309) primnah=1139309;
00503 if (x>1162099) primnah=1162099;
00504 if (x>1185367) primnah=1185367;
00505 if (x>1209083) primnah=1209083;
00506 if (x>1233263) primnah=1233263;
00507 if (x>1257961) primnah=1257961;
00508 if (x>1283129) primnah=1283129;
00509 if (x>1299827) primnah=1299827;
00510 if (x>1400000) primnah=x;
00511 return primnah;
00512 }

Generated on Mon Jan 16 13:23:41 2006 for IPPL by  doxygen 1.4.6