{VERSION 6 0 "IBM INTEL LINUX" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 1 12 0 0 255 1 0 2 0 2 1 2 0 0 0 1 }{CSTYLE "" 0 21 "" 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 1 } {CSTYLE "_cstyle33" -1 206 "Times" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 } {CSTYLE "_cstyle98" -1 244 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle88" -1 256 "Courier" 1 12 0 0 255 1 0 2 0 2 1 2 0 0 0 1 }{CSTYLE "_cstyle87" -1 257 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle86" -1 258 "Times" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle85" -1 259 "Courier" 1 10 0 0 255 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle84" -1 260 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle83" -1 261 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle82" -1 262 "Times" 0 1 0 0 255 1 0 0 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle81" -1 263 "Courier" 1 10 0 0 255 1 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle80" -1 264 "Courier" 1 10 0 0 255 1 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle79" -1 265 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle78" -1 266 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle77" -1 267 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle76" -1 268 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle75" -1 269 "Times" 1 20 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle74" -1 270 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle73" -1 271 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle72" -1 272 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle71" -1 273 "" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle70" -1 274 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle69" -1 275 "Courier" 1 12 0 0 255 1 0 2 0 2 1 2 0 0 0 1 }{CSTYLE "_cstyle68" -1 276 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle67" -1 277 "Times" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle66" -1 278 "Courier" 1 10 0 0 255 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle65" -1 279 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle64" -1 280 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle63" -1 281 "Times" 0 1 0 0 255 1 0 0 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle62" -1 282 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle61" -1 283 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle60" -1 284 "Courier " 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle101" -1 285 "Times " 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle100" -1 286 "Times " 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle59" -1 287 "Times " 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle58" -1 288 "Times " 1 20 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle57" -1 289 "Time s" 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle56" -1 290 "Times " 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle55" -1 291 "Times " 1 36 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle54" -1 292 "" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle53" -1 293 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle52" -1 294 "Courier" 1 12 0 0 255 1 0 2 0 2 1 2 0 0 0 1 }{CSTYLE "_cstyle51" -1 295 "Courier " 1 12 0 0 255 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle50" -1 296 "Time s" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle49" -1 297 "Courie r" 1 10 0 0 255 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle48" -1 298 "Tim es" 1 24 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle47" -1 299 "Time s" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle46" -1 300 "Times " 0 1 0 0 255 1 0 0 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle45" -1 301 "Times " 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle44" -1 302 "Times " 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle43" -1 303 "Courie r" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle42" -1 304 "Times " 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle41" -1 305 "Times " 1 20 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle40" -1 306 "Time s" 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle102" -1 307 "Cour ier" 1 12 0 0 255 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle103" -1 308 " Courier" 1 12 0 0 255 1 0 2 0 2 1 2 0 0 0 1 }{CSTYLE "_cstyle104" -1 309 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle105" -1 310 "" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle106" -1 311 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle107" -1 312 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle108" -1 313 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle109" -1 314 "Times" 1 20 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle110" -1 315 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle111" -1 316 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle112 " -1 317 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle113 " -1 318 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle114 " -1 319 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle115 " -1 320 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle116 " -1 321 "Times" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "Ti mes" 1 15 0 0 0 1 1 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 2 1 0 1 0 2 2 0 1 } {PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "R3 Font 2" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 128 0 0 1 2 2 2 2 2 2 1 1 1 1 } 1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 258 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Title" -1 259 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 3 0 3 0 2 2 19 1 }{PSTYLE "Maple Outp ut" -1 260 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "_pstyle70" -1 261 1 {CSTYLE " " -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle9" -1 262 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_ps tyle8" -1 263 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle7" -1 264 1 {CSTYLE "" -1 -1 "Times" 1 20 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle6" -1 265 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE " _pstyle5" -1 266 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle4" -1 267 1 {CSTYLE "" -1 -1 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle69" -1 268 1 {CSTYLE "" -1 -1 "Cou rier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle3" -1 269 1 {CSTYLE "" -1 -1 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle68" -1 270 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle2" -1 271 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle67" -1 272 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_psty le1" -1 273 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle66" -1 274 1 {CSTYLE "" -1 -1 "Times" 1 20 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle65" -1 275 1 {CSTYLE "" -1 -1 "Ti mes" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle64" -1 276 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle63" -1 277 1 {CSTYLE "" -1 -1 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle62" -1 278 1 {CSTYLE "" -1 -1 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle61" -1 279 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_ pstyle60" -1 280 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Maple Output260" -1 281 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle59" -1 282 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle58" -1 283 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_psty le57" -1 284 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle56" -1 285 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle55" -1 286 1 {CSTYLE "" -1 -1 "Cour ier" 1 10 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle54" -1 287 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle53" -1 288 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle52" -1 289 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle51" -1 290 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_psty le50" -1 291 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Title262" -1 292 1 {CSTYLE "" -1 -1 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle49" -1 293 1 {CSTYLE "" -1 -1 "Tim es" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle48" -1 294 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle47" -1 295 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle46" -1 296 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle45" -1 297 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Tit le259" -1 298 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle44" -1 299 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle43" -1 300 1 {CSTYLE "" -1 -1 "Time s" 1 20 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle42" -1 301 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle41" -1 302 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle40" -1 303 1 {CSTYLE "" -1 -1 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "R3 Font 2" -1 304 1 {CSTYLE "" -1 -1 "Times" 1 12 128 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "R3 Fo nt 0" -1 305 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Maple Output12" -1 306 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Normal263" -1 307 1 {CSTYLE "" -1 -1 "Time s" 1 18 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle39" -1 308 1 {CSTYLE "" -1 -1 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle38" -1 309 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Normal261" -1 310 1 {CSTYLE " " -1 -1 "Times" 1 14 128 0 128 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle37" -1 311 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle36" -1 312 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle35 " -1 313 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle34" -1 314 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle33" -1 315 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_ps tyle32" -1 316 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle31" -1 317 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle30" -1 318 1 {CSTYLE "" -1 -1 "Time s" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle131" -1 319 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle130" -1 320 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Text Output6" -1 321 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 1 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "Normal258" -1 322 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_ps tyle29" -1 323 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle28" -1 324 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle27" -1 325 1 {CSTYLE "" -1 -1 "Time s" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle26" -1 326 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle129" -1 327 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle25" -1 328 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle128" -1 329 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_ps tyle24" -1 330 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle127" -1 331 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle23" -1 332 1 {CSTYLE "" -1 -1 "Time s" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle126" -1 333 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle22" -1 334 1 {CSTYLE "" -1 -1 "Times" 1 20 255 0 0 1 2 2 2 2 2 2 1 1 1 1 } 3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle125" -1 335 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle21" -1 336 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle 20" -1 337 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle124" -1 338 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle123" -1 339 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle122" -1 340 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle121" -1 341 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle120" -1 342 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle19" -1 343 1 {CSTYLE "" -1 -1 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "_ pstyle18" -1 344 1 {CSTYLE "" -1 -1 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle17" -1 345 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle132" -1 346 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle133" -1 347 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_psty le134" -1 348 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle135" -1 349 1 {CSTYLE "" -1 -1 "Times" 1 18 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle136" -1 350 1 {CSTYLE "" -1 -1 "T imes" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle137" -1 351 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle138 " -1 352 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle139" -1 353 1 {CSTYLE "" -1 -1 "Times" 1 20 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle140" -1 354 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_ps tyle141" -1 355 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle142" -1 356 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle143" -1 357 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle144" -1 358 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 4 4 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle145 " -1 359 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle146" -1 360 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle147" -1 361 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 6 6 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle148" -1 362 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_psty le149" -1 363 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle150" -1 364 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle151" -1 365 1 {CSTYLE "" -1 -1 "Tim es" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 } {PSTYLE "_pstyle152" -1 366 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle153" -1 367 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle154" -1 368 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle155" -1 369 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_psty le156" -1 370 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }{PSTYLE "_pstyle157" -1 371 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 529 "restart: if ker nelopts(platform)=\"unix\" \n then unix:= true; win98:= false; \n dat e_string:= convert(substring( op(2,ssystem(`date +%a_%d/%m/%Y `)), 1.. -2), symbol)\n else unix:= false; win98:= evalb(ssystem(\"win\")[2][1. .13]=\"Vous utilisez\"); \n if win98 then tmp:= ssystem(\"date\")[2]; searchtext(\":\", tmp); \n tmp:= cat(substring(tmp, 1..%-2), \" \+ \", substring(tmp, %+1..-1));\n date_string:= substring(tmp, 22..35 );\n else date_string:= ssystem(\"date /t\")[2][1..-2];\n fi: fi: 'un ix'=unix, 'win98'=win98, 'date'= date_string; " }}}{EXCHG {PARA 348 "> " 0 "" {MPLTEXT 1 308 0 "" }}{PARA 349 "" 0 "" {TEXT 309 56 "sous win 98, taper [entr\351e] pour sortir de la fenetre DOS" }}{PAGEBK }{PARA 349 "" 0 "" {TEXT 309 0 "" }}{PARA 350 "" 0 "" {TEXT 311 15 "Pldx (v67 89.33)" }}{PARA 349 "" 0 "" {TEXT 309 0 "" }}{PARA 351 "" 0 "" {TEXT 312 63 "Copyright (c) 1996-2007 Pierre L. Douillet " }}{PARA 352 "" 0 "" {TEXT 313 0 "" }}{PARA 351 "" 0 "" {TEXT 312 11 "Licence GPL" }}{PARA 351 "" 0 "" {TEXT 312 0 "" }}{PARA 351 "" 0 " " {TEXT 312 283 "libre reproduction pour un usage universitaire sous r eserve d'une copie compl\350te,\navec reproduction du programme source dont, en particulier, la pr\351sente mention\n \naucune garantie de f iabilit\351. \nen particulier, toute utilisation dans un contexte indu striel est vivement d\351conseill\351e\n" }}{PARA 353 "" 0 "" {TEXT 314 37 "chargement par la commande with(pldx)" }}}{EXCHG {PARA 346 "> \+ " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 22 " Routines pr\351paratoires" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 32 "gc( ); kernelopts(ASSERT=true):" }}}{EXCHG {PARA 346 "> " 0 " " {MPLTEXT 1 307 465 "[libname][-1]: racine:= %[1..-4]:\ndo loc:= sear chtext(\"//\",racine); if loc = 0 then break fi;\nracine:= cat(substri ng(racine,1..loc-1),\"/\", substring(racine,loc+2..-1)); od:\ndo loc:= searchtext(\"\\\\\",racine); if loc = 0 then break fi;\nracine:= cat( substring(racine,1..loc-1),\"/\", substring(racine,loc+1..-1)); od:\nl oc:= SearchText(\"MAPLE\", racine): if loc <> 0 then\nracine:= cat(sub string(racine,1..loc-1),\"Maple\", substring(racine,loc+5..-1)); fi: \+ \n'racine'=racine; " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 69 " kernelopts(version): Version:= substring(%, 1..searchtext(\",\", %)-1) ;" }}}{EXCHG {PARA 352 "" 0 "" {TEXT 313 32 "To be included in other p ackages" }}{PARA 355 "" 0 "" {TEXT 316 207 "try read( cat(racine, \"up date/check.m\"));\nprint(`The usual 'update' directory stil exists, as requiered`);\ncatch: print (` An 'update' repertory MUST be created, \+ using 'pldx' package`);;\nend try; print(``); " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 16 "gc( ); libname; " }}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 183 "interface(verboseproc=1); with(linalg, transpose, stackmatrix, co ncat, col, row, coldim, rowdim): with(LinearAlgebra, DiagonalMatrix, T ranspose, MatrixScalarMultiply): linalg0:= %,%%;" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 41 "Creates an 'Update' repertory (if needed)" }}{EXCHG {PARA 352 "" 0 "" {TEXT 313 40 "This section is purposedly desactivated." }}{PARA 352 "" 0 "" {TEXT 313 69 "Read carefully the help pages for 'march' be fore using this section !" }}}{EXCHG {PARA 352 "" 0 "" {TEXT 313 71 "C ette section sert \340 cr\351er (une fois pour toutes) un r\351pertoir e update," }}{PARA 352 "" 0 "" {TEXT 313 62 "conform\351ment au m\351c anisme impl\351ment\351 dans Maple. Les nouvelles" }}{PARA 352 "" 0 " " {TEXT 313 56 "biblioth\350ques viendront s'installer dans ce r\351pe rtoire. " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 312 "try read( \+ cat(racine, \"update/check.m\"));\ncatch: print (` To create an 'updat e' directory, `); \nprint(`the following statement must be re-activat ed by replacing (1=2) by (2=2) `); \nprint(`Before such a creation, re ad carefully the Maple help pages for 'march' `);;\nerror \"missing ' update' directory \"\nend try; " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 1681 "if (1=2) \nthen \n if win98 then # a \"brute forc e trick\" to catch today's date\n fd:= fopen(\"c:/windows/rep_ret.tx t\", WRITE):\n fprintf(fd, \"\\n \\n\"); fclose(fd);\n fd:= fopen( \"c:/windows/dater.bat\", WRITE):\n fprintf(fd, \"date < c:\\\\windo ws\\\\rep_ret.txt > c:\\\\windows\\\\date.txt\\n \\n\"):\n fclose(fd );\n fi;\n if unix then\n if substring(Version,1..7)=`Maple 9` th en mapleini:= cat(racine, \"lib/init\")\n elif substring(Version,1. .7)=`Maple 6` then mapleini:= cat(racine, \"lib/init\"); \n else er ror \"unknown version\"\n fi;\n else\n if substring(Version,1. .7)=`Maple 9` then mapleini:= cat(racine, \"Lib/Maple.ini\")\n elif substring(Version,1..7)=`Maple 8` then mapleini:= cat(racine, \"Lib/M aple.ini\")\n elif substring(Version,1..7)=`Maple 7` then mapleini: = cat(racine, \"Lib/Maple.ini\")\n elif substring(Version,1..7)=`Ma ple 6` then mapleini:= cat(racine, \"Bin.Wnt/Maple.ini\")\n else er ror \"unknown version\"\n fi;\n fi;\n\n 'mapleini'=mapleini;\n repu pda:= cat(racine, \"update\");\n mkdir(repupda) :\n march('create', re pupda, 100);\n toto:=1: cat(``, repupda, `/check.m`): save toto, %;\n \+ quoi:= \n `\\nunprotect(trace): trace:='trace': `||\n `\\nunpro tect(norm) : norm:='norm': `||\n `\\nwith(plots, display): `||\n \+ `\\n `||\n `\\nif libname[1] <> \"` || repupda || `\" ` ||\n \+ `\\n then if searchtext(\"update\", libname[1]) <> 0 `||\n `\\n \+ then libname:= \"` || repupda || `\", libname[2..-1] `||\n `\\n \+ else libname:= \"` || repupda || `\", libname: fi: fi: \\n`;\n fd := \+ fopen(mapleini, WRITE); fprintf(fd, quoi); fclose(fd); \nprint(`_done. \\n Now, restart Maple, to reread the *.ini file`);\nerror \"You MUST restart Maple NOW, to reread the *ini.file \";\nfi:" }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}{EXCHG {PARA 356 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 0 "" }} }{SECT 0 {PARA 357 "" 0 "" {TEXT 317 80 "Cr\351ation de la liste des p rocedures savelib'ed, routines xreadlib, xwith, xmarch" }}{SECT 0 {PARA 358 "" 0 "" {TEXT -1 69 "mylib ... \352tre certain de ne pas enc ombrer la biblioth\350que principale" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 268 "if assigned(libname) then mylib := cat(op(1, eval( [libname], 1)), \"/\");\n else error \"the global variable `libname' m ust be assigned\"\nend if;\nunprotect(savelib); \nsavelib:= proc () op tion builtin; 274 end proc: ## Maple 9.5\nsavelib:= proc() error \"sav elib is gone\" end:" }}}}{SECT 0 {PARA 358 "" 0 "" {TEXT -1 16 "gestio n ssavelib" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 107 "ever_load := NULL:\nssavelib:= NULL: ### la liste de ce qui a \351t\351 sauv \351\nfakename:= cat(mylib, \"azorvelo.m\");" }}}{EXCHG {PARA 359 "> \+ " 0 "" {MPLTEXT 1 -1 241 "dirname:= proc(qui) local dir, nam, ici; \nd ir, nam:= ``, qui;\nto 4 while true do \n ici:= searchtext(\"/\", nam) ; \n if ici=0 then break fi;\n dir, nam:= cat(dir, substring(nam,1..ic i-1), \"/\"), substring(nam, ici+1..-1);\nod; return dir, nam;\nend:" }}}{EXCHG {PARA 360 "> " 0 "" {MPLTEXT 1 244 1016 "xsavelib678:= proc( ) local filename, values, library, pathname, f;\nglobal ssavelib, libn ame; option `Copyright Pld, 1996-2007`;\nif assigned(libname) then lib rary := op(1, eval([libname], 1))\n else error \"the global variable ` libname' must be assigned\"\nend if;\nif nargs < 2 then error \"no nam es specified to save\" end if;\nfilename := args[nargs];\nvalues := ar gs[1 .. nargs - 1] ;\nif not type(filename, '\{string, symbol\}') \n \+ then error \"last argument (filename) must be a string\" end if;\nif \+ not searchtext(\".m\", filename, -2 .. -1) = 1 \n then error \"last a rgument (filename) must be a *.m string\" end if;\n if not type([value s], 'list(symbol)') \n then f := remove(type, [values], 'symbol'); \+ \n error \"all arguments must be symbols, cannot save these %1\", f\n end if;\n pathname := cat(library, \"/\", filename);\n f := subs('T ' = (values, pathname), proc() save T end proc);\n try f(); return; \+ \n catch:\n finally ssavelib:= ssavelib, values; \n end try;\nerro r \"unable to save %1 in %2\", [values], library\nend proc:" }}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 891 "xsavelib9:= proc() loca l filename, values, pathname, f, dir, nam;\nglobal ssavelib, mylib, fa kename; option `Copyright Pld, 2007`;\nif nargs < 2 then error \"nargs =1, expected=2\" end if;\nfilename := args[nargs];\nvalues := args[1 . . nargs - 1] ;\nif not type(filename, '\{string, symbol\}') \n then \+ error \"last argument (filename) must be a string\" end if;\nif not se archtext(\".m\", filename, -2 .. -1) = 1 \n then error \"last argumen t (filename) must be a *.m string\" end if;\nif not type([values], 'li st(symbol)') \n then f := remove(type, [values], 'symbol'); \n erro r \"all arguments must be symbols, cannot save these %1\", f\nend if; \nssavelib:= ssavelib, values;\ndir,nam:= dirname(filename); try mkdir (cat(mylib, dir)); catch: end try;\n\nf := subs('T' = (values, cat(myl ib, filename)), proc() save T end proc);\ntry f();\ncatch: \n error \+ \"unable to save %1 in %2\", [values], mylib\nend try;\nend proc:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "Version;" }}}{EXCHG {PARA 359 "> " 0 "" {MPLTEXT 1 0 107 "if Version=`Maple 9.50` then xsaveli b:= eval(xsavelib9)\nelif member(substring(Version,1..7), \{`Maple 6` ," }{MPLTEXT 1 -1 30 "`Maple 7`,`Maple 8`, `Maple 9`" }{MPLTEXT 1 0 73 "\}) then xsavelib:= eval(xsavelib678) \nelse error \"undefined xsa velib\" fi:" }{MPLTEXT 1 -1 0 "" }}}}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 4 "init" }} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 78 "# tzx:=\"\": xsavelib('t zx', `pldx.m`); xsavelib('tzx', `pldx/xmanip_sommes.m`);" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 15 "pldx:='pldx': " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 103 "message = \"pldx v6789-33 ; \+ author : ; last modif (v6789) : \"||\n (date_st ring):" }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 116 "`pldx/init`:= \n su bs(%, proc() option `Copyright Pierre L. Douillet`; \n print(convert( message, symbol)) end): %();" }}}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 361 "" 0 "" {TEXT 318 31 "gestion march sp \351cifique \340 pldx" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 239 "xmarch:= proc() option `Copyright Pierre L. Douillet`; global MAT RIX;\nmarch('list', mylib); \nmap(proc(z) local y; y:= z[2]; sprintf( \"%d/%02d/%02d/%02d:%02d\",op(y)); subsop(2=%,z) ; end, %):\nsort(%, ( x,y)->evalb(x[2] " 0 "" {MPLTEXT 1 0 9 "xmarch();" }}}{EXCHG {PARA 362 "> " 0 "" {MPLTEXT 1 -1 107 "march('prefix', mylib, \"p\"); # march(delete, mylib, op(%)) ;\nmarch(gc, mylib); march(pack, mylib); xmarch();" }}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 30 "ever_load:= ever_load, xmarch:" }}}} {EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 95 "Sucre syntaxique (id, xexp, xclone, xcombipo, xopti on, xplus, xprint, xunassign, xvalue, yjoli)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 7 "id (*) " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 21 "id:= proc() args end:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 30 "xclone : m\352me nom, autre objet" }}{EXCHG {PARA 346 "> " 0 " " {MPLTEXT 1 307 451 "`pldx/xclone` := proc(x) options `Copyright Pier re L. Douillet`; local _x1, _x2;\nif type([args], [\{string, symbol\}] ) \n then subs('X' = x, proc() local X; X:='X' ; X end)()\n elif typem atch(args, _x1::anyfunc(_x2::\{string, symbol\}) ) \n then subs('X' = \+ op(0,_x1), 'Y' = _x2, proc() local X,Y; Y:='Y': X(Y) end)() \n else er ror \"received %1 instead of flat or flat(flat)\" \nfi end :\npldx[xcl one] := `pldx/xclone` : xsavelib(`pldx/xclone`, `pldx/xclone.m`) :" }} }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 47 "xexp : pour que l'exponentielle s'affiche 'exp' " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 57 "xexp:= proc(ZZ) glob al` exp` ; subs(exp= ` exp`,ZZ); end:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 64 "xrefact:= proc(Z) (eval@subs)(GAMMA=proc(n) (n-1)! \+ end, Z); end:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}} {SECT 0 {PARA 357 "" 0 "" {TEXT 317 29 "xcombipo (*) : combine powers " }}{EXCHG {PARA 352 "" 0 "" {TEXT 313 73 "Combine powers. Thereafter \+ YOU have to deal with any subsequent errors !)" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 352 "xcombipo:= proc(z) local rep; option `Copy right Pierre L. Douillet`;\n# nargs=2 is : simplify_\n if type (z, `^ `) then rep:= combine(z, 'power', 'symbolic')\nelif hastype(z, `^`) \+ then rep:= combine(map(procname, z), 'power', 'symbolic')\nelse rep:= \+ z \nfi; \n if nargs = 2 then return simplify(rep, radical, 'symbolic') \n else return rep; end if\nend proc:" }}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 11 "xoption (*)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 244 "xoption := proc(opt::uneval, quoi, sinon) option `Copyright P ierre L. Douillet`; \nlocal fit ; fit := (op@select)(has, eval(opt), q uoi) ; \n if fit <> NULL then opt:= subs(fit= NULL, eval(opt) ) ; sub s(fit, quoi) \n else sinon \n fi ; \n% ; end :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 47 "xprint (*) : Nice printing for Maple procedu res" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 931 "xprint:= proc(ar g1::\{name, procedure\}) option `Copyright Pierre L. Douillet`;\nlocal xt, xxt; global uu, FUNCTION;\n interface('prettyprint' = 1, 'verbose proc' = 3, 'indentamount' = 1);\n if type(arg1, procedure) then print( args)\n else\n uu := arg1;\n xt := disassemble(addressof(uu));\n if xt[2] = 0 then\n if nargs = 2 then error \"%1 remains unassigned af ter a readlib\", arg1;\n else try uu := readlib(uu); procname(args, \+ 1) \n catch: error \"%1 unassigned and not readlib'able\", arg1 \n finally interface('prettyprint' = 2, 'verboseproc' = 1, 'ind entamount' = 4); \n end try\n end if\n else\n xxt := disa ssemble(xt[2]);\n if xxt[1] = kernelopts(dagtag = FUNCTION) and xxt[ 2] = addressof(readlib) then\n print(\"trying1\"); print(pointto(xx t[3])); print(eval(arg1))\n else print(\"trying2\", arg1)\n end if \n end if\n end if;\n interface('prettyprint' = 2, 'verboseproc' = 1, 'indentamount' = 4): NULL;\nend proc:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 13 "xunassign (*)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 365 "xunassign:= proc(ff::string) options `Copyright Pierre L. Do uillet`;\nlocal str, str2, deb; \nstr:= ff; str2:= \"unassign( \": \nto 30 while str <> \"\" do\ndeb:= searchtext(\",\", str); if deb=0 \+ then str2:= cat(str2, \"'\", str, \"' );\"); break fi;\nstr2:= cat(str 2, \"'\", substring(str,1..deb-1), \"', \");\nstr:= substring(str,deb +1..-1); \nod;\nparse(str2, 'statement');\nend:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 27 "yjoli (*) : back from xjoli" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 52 "yjoli2:= proc() (op@subs)('``' = id, \+ [args]); % end:" }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 60 "unprotect(yj oli): `yjoli`:= subs(id=eval(id), eval(yjoli2)):" }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 87 "ever_load:= ever_load, id, xexp, xref act, xcombipo, xoption, xprint, xunassign, yjoli:\n" }}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 117 "Manipulation de sommes (xsplit0, xspl it1, ysplit1, xsplit_1, ysplit_1, xavance, xrecule, routines de parit \351, xcauchy)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 20 "unprot ect(x_syntax):" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 311 "x_sy ntax:= proc(expr, quoi, var, debut, fin) option inline;\ntypematch(exp r, \{Intt,Sum\}(quoi::anything, var::anything=(debut::anything..fin::a nything)) ) \nend:\nxx_syntax:= proc(expr, quoi, var, debut, fin) opti on inline;\ntypematch(expr, Int(quoi::anything, var::anything=(debut:: anything..fin::anything)) ) \nend:" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 44 "xsplit0 : \351valuer si les bornes sont connues" }} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 420 "xsplit0:= proc(expr)\nl ocal var, quoi, debut, fin;\n if typematch(expr,\n Sum(quoi::anything, var::anything = (debut::anything) .. (fin::anything)))\n then if de but=fin then return subs(var=debut, quoi)\n elif quoi=0 then retur n 0\n elif type(debut, rational) and type(fin, rational) then retu rn (eval@subs)(Sum = add, expr) \n fi\n elif has(expr, Sum) t hen return map(procname, args)\n end if;\n expr\nend proc:" }}}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 357 " " 0 "" {TEXT 317 28 "xsplit1 : s\351parer le dernier" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 221 "xsplit1:= proc (expr ) local var, qu oi, debut, fin; \n if x_syntax(expr, quoi, var, debut, fin) \n then S um(quoi, var=debut..fin-1) + subs(var = fin, quoi); \n elif has(expr,S um) then map(procname,args) else expr fi; % end:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 33 "ysplit1 : s\351parer l'apres-dernier" }} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 223 "ysplit1:=proc(expr) loc al var, quoi, debut, fin;\n if x_syntax(expr, quoi, var, debut, fin) \+ \n then Sum(quoi, var = debut .. fin+1) - subs(var = fin+1, quoi)\n e lif has(expr, Sum) then map(procname, args) else expr fi; % end:" }}}} {SECT 0 {PARA 357 "" 0 "" {TEXT 317 29 "xsplit_1 : s\351parer le premi er" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 225 "xsplit_1:=proc(ex pr) local var, quoi, debut, fin;\n if x_syntax(expr, quoi, var, debut, fin) \n then Sum(quoi, var = debut+1 .. fin) + subs(var = debut, quo i)\n elif has(expr, Sum) then map(procname, args) else expr fi; % end \+ :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 34 "ysplit_1 : s\351parer l 'avant premier" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 227 "yspli t_1:=proc(expr) local var, quoi, debut, fin;\n if x_syntax(expr, quoi, var, debut, fin) \n then Sum(quoi, var = debut-1 .. fin) - subs(var \+ = debut-1, quoi)\n elif has(expr, Sum) then map(procname, args) else e xpr fi; % end :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 18 "xavance : chvar ++" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 519 "xavance:=p roc(expr, marque)\nlocal var, quoi, debut, fin, terme, action;\n if x_ syntax(expr, quoi, var, debut, fin) then\n if type(quoi, `+`) then te rme := select(has, quoi, marque) else terme := quoi end if; \n if na rgs = 3 then action := args[3] else action := x -> x end if;\n subs(q uoi = (action@subs)(var = var + 1, terme)+(quoi-terme), expr) + subs(v ar = debut, terme);\n if fin = infinity then % else % - subs(var = fi n + 1, terme) end if\n elif has(expr, Sum) then map(procname, args)\n \+ else expr\n end if\nend proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 20 "xrecule : chvar - - " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 518 "xrecule:=proc( expr, marque)\nlocal var, quoi, debut, fin, terme, action;\n if x_synt ax(expr, quoi, var, debut, fin) then\n if type(quoi, `+`) then terme \+ := select(has, quoi, marque) else terme := quoi end if;\n if nargs = \+ 3 then action := args[3] else action := x -> x end if;\n subs(quoi = \+ (action@subs)(var = var - 1, terme) +(quoi-terme), expr) - subs(var = \+ debut - 1, terme);\n if fin = infinity then % else % + subs(var = fin , terme) end if\n elif has(expr, Sum) then map(procname, args)\n else \+ expr\n end if\nend proc:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 55 " routines de parit\351 : xchpair, xchimpr, xchnull, xschvar" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 166 "xchnull:= proc(f) options `Cop yright Pierre L. Douillet`;\n if type(f, `=`) then map(procname, f) \+ \nelif type(f, `+`) then remove(has, f, Sum) \nelse f end if end proc: " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 172 "xchpair:=proc(f) o ptions `Copyright Pierre L. Douillet`;\nglobal x_fac, xschvar;\n if na rgs = 2 then x_fac := args[2] else x_fac := 1 end if; xschvar(f, 'n = \+ 2*n')\nend proc: " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 174 "x chimpr:= proc(f) options `Copyright Pierre L. Douillet`;\nglobal x_fac , xschvar;\n if nargs = 2 then x_fac := args[2] else x_fac := 1 end if ; xschvar(f, 'n = 2*n-1')\nend proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 682 "xschvar:= proc(expr, sub_) options `Copyright Pier re L. Douillet`;\nlocal var, quoi, fin, debut, nvar, sub;\nglobal x_fa c, glok;\n if op(0, expr) = Sum then\n typematch(expr,\n Sum(quoi:: anything, var::anything = (debut::anything) .. (fin::anything)));\n g lok := glok;\n if nargs=3 then nvar:= args[3] else nvar := op(indets( sub_)); fi;\n sub := subs(nvar = var, sub_);\n if fin = infinity the n fin else (floor@solve)(subs(sub, var = fin), var) end if;\n (ceil@s olve)(subs(sub, var = debut), var) .. %;\n x_fac*Sum(subs(sub, quoi/x _fac), var = %)\n elif nops(expr) = 1 then expr\n else\n subsop(seq(g lok = procname(op(glok, expr), sub_), glok = 1 .. nops(expr)), expr)\n end if\nend proc:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 7 "xcauchy " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 770 "xcauchy:= proc(sa, \+ sb_, action_) options `Copyright Pierre L. Douillet`;\nlocal action, s b, ta, tb, ra, rb, va, vb, da, fa, db, fb;\nglobal xclone, xcombipo, n , k;\n if assigned(n) or assigned(k) then error k, n, \"k or n is assi gned\" end if;\n if nargs = 3 then action := action_ else action := xc ombipo end if;\n if op(0, sa) <> Sum or op(0, sb_) <> Sum then\n erro r \"syntax: must be xcauchy(Sum(), Sum())\"\n end if;\n sb := subs(k = xclone('bad_k'), sb_);\n ta, ra, tb, rb := op(sa), op(sb);\n va, vb : = lhs(ra), lhs(rb);\n da, fa, db, fb := op(rhs(ra)), op(rhs(rb));\n if fa <> infinity or fb <> infinity then\n error \"should be infinity, \+ but was\", fa, fb\n end if;\n Sum(action(subs(va = k, ta)*subs(vb = n \+ - k, tb)), k = da .. n - db);\n Sum(%, n = da + db .. infinity)\nend p roc:" }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 46 "xmanip_sommes : appel des routines et \+ exemples" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 456 "`pldx/xmani p_sommes`:= proc() options `Copyright Pierre L. Douillet`; \nglobal k, x, xsplit1, ysplit1, xavance, xsplit_1, ysplit_1, xrecule; local expr ; \nif nargs=0 then RETURN() fi; expr:= Sum(x^k, k=2..8); \nprint('xsp lit1'(expr)=xsplit1(expr)); print('ysplit1'(expr)= ysplit1(expr));\npr int('xsplit_1'(expr)=xsplit_1(expr)); print('ysplit_1'(expr)= ysplit_1 (expr));\nprint('xavance'(expr)=xavance(expr)); print('xrecule'(expr)= xrecule(expr));\nend: # %(1); " }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 43 "pldx[xmanip_sommes]:= `pldx/xmanip_sommes`:" }}}{EXCHG {PARA 346 " > " 0 "" {MPLTEXT 1 307 188 "xsavelib(`pldx/xmanip_sommes`, xx_syntax, x_syntax, xsplit0, xsplit1, ysplit1, xsplit_1, ysplit_1, xavance, xre cule, xchpair, xchimpr, xchnull, xschvar, xcauchy, \"pldx/xmanip_somme s.m\") : " }}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 354 " " 0 "" {TEXT 315 83 "Manipulation de produits (zsplit1, zysplit1, zspl it_1, zysplit_1, zavance, zrecule)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 28 "zsplit1 : s\351parer le dernier" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 279 "zsplit1:= proc (expr ) local var, quoi, debut, fin ; \nif typematch(expr, 'Product'(quoi::anything, var::name = debut::an ything .. fin::anything)) \nthen Product(quoi, var=debut..fin-1) * sub s(var = fin, quoi); \n elif has(expr,Product) then map(procname,args) else expr fi; % end :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 34 "zy split1 : s\351parer l'apres-dernier" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 283 "zysplit1:=proc(expr) local var, quoi, debut, fin; \nif typematch(expr, 'Product'(quoi::anything, var::name = debut::anyt hing .. fin::anything)) then Product(quoi, var = debut .. fin+1) / sub s(var = fin+1, quoi)\n elif has(expr, Product) then map(procname, a rgs) else expr fi; % end :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 29 "zsplit_1 : s\351parer le premier" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 283 "zsplit_1:=proc(expr) local var, quoi, debut, fin; \nif typematch(expr, 'Product'(quoi::anything, var::name = debut::anyt hing .. fin::anything)) then Product(quoi, var = debut+1 .. fin) * sub s(var = debut, quoi)\n elif has(expr, Product) then map(procname, a rgs) else expr fi; % end :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 35 "zysplit_1 : s\351parer l'avant premier" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 286 "zysplit_1:=proc(expr) local var, quoi, debut, f in;\nif typematch(expr, 'Product'(quoi::anything, var::name = debut::a nything .. fin::anything)) then Product(quoi, var = debut-1 .. fin) / \+ subs(var = debut-1, quoi)\n elif has(expr, Product) then map(procna me, args) else expr fi; % end :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 18 "zavance : chvar ++" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 533 "zavance:= proc(expr, marque) local var, op1, debut, fin, term e, action;\nif typematch(expr, 'Product'(op1::anything, var::name = de but::anything .. fin::anything))\n then if type(op1, `*`) then terme \+ := select(has, op1, marque) else terme:= op1 fi;\n if nargs=3 then \+ action:= args[3] else action:= (x->x) fi;\n subs(terme = (action@su bs)(var = var + 1, terme), expr) * subs(var = debut, terme);\n if f in = infinity then % else % / subs(var = fin + 1, terme) fi;\nelif has (expr, Product) then map(procname, args) else expr fi end:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 20 "zrecule : chvar - - " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 545 "zrecule:= proc(expr, marque) \+ local var, op1, debut, fin, terme, action;\n if typematch(expr, 'Produ ct'(op1::anything, var::name = debut::anything..fin::anything))\nthen \n if type(op1, `*`) then terme := select(has, op1, marque) else term e := op1 fi;\n if nargs = 3 then action := args[3] else action := x - > x fi;\n subs(op1 = op1/terme*(action@subs)(var = var - 1, terme), e xpr)\n / subs(var = debut - 1, terme);\n if fin = infinity then % else %*subs(var = fin, terme) fi\n elif has(expr, Product) then map(p rocname, args)\n else expr\n fi\nend:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 48 "zmanip _products : appel des routines et exemples" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 468 "`pldx/zmanip_products`:= proc() options `Copyri ght Pierre L. Douillet`; \nglobal a, k, zysplit1, zsplit_1, zysplit_1, zavance, zrecule, zsplit1; local expr; \nif nargs=0 then RETURN() fi; expr:= Product(a[k], k=2..8); \nprint('zsplit1'(expr)=zsplit1(expr)); print('zysplit1'(expr)= zysplit1(expr));\nprint('zsplit_1'(expr)=zspl it_1(expr)); print('zysplit_1'(expr)= zysplit_1(expr));\nprint('zavanc e'(expr)=zavance(expr)); print('zrecule'(expr)= zrecule(expr));\nend: \+ # \"(); " }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 180 "pldx[zmanip_produc ts]:= 'readlib'(`pldx/zmanip_products`) : \nxsavelib(`pldx/zmanip_prod ucts`, zsplit1, zysplit1, zsplit_1, zysplit_1, zavance, zrecule, `pldx /zmanip_products.m`) : " }}}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 104 "Manipulation d'int\351grales (xxply, convert/D, xdchvar, xfubini, xva lval, xjoli, xlap, xreverse, xparfrac)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 5 "xxply" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 737 "` pldx/xply`:= proc(expr_, action) global ind, indd;\nlocal qui, typ, l esargs, placex, expr, traitons_les_tous;\n# place=qqq si l'argument n' est pas en premi\350re place\n# s'applique \340 l'int\351rieur du Type de premier niveau\nexpr:= expr_;\n typ := \{Product, Sum, Int\};\n in d := indets(expr, typ(anything $ 2)); \nif ind=\{\} then return expr f i;\n indd:= indets(map2(op,1,ind), typ(anything $ 2)): ind:= ind minus indd; \nfor traitons_les_tous in ind do\n if type(args[-1], `=`) and \+ lhs(args[-1]) = 'place' then\n placex := rhs(args[-1]); lesargs := ar gs[3 .. 1 + placex], traitons_les_tous, args[2 + placex .. -2]\n else \+ lesargs := traitons_les_tous, args[3 .. -1]\n end if;\n expr:= subs(t raitons_les_tous = action(lesargs), expr)\nod: expr;\nend proc: " }}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 898 "`pldx/xxply`:= proc(exp r_, action)\nlocal ind, indd, inddd, typ, lesargs, placex, expr, trait ons_les_tous;\n# place=qqq si l'argument n'est pas en premi\350re plac e\n# s'applique au Type de deuxi\350me niveau\nexpr:= expr_;\n typ := \+ \{Product, Sum, Int\};\n ind := indets(expr, typ(anything $ 2));\n ind d:= indets(map2(op,1,ind), typ(anything $ 2)): ind:= ind minus indd; \+ \n inddd:= indets(map2(op,1,indd), typ(anything $ 2)): indd:= indd min us inddd;\nif indd=\{\} then lprint (\"surprise \\n\");\n print('ind'= ind, 'indd'=indd,'inddd'=inddd); error; \nfi;\n# print([1,2,3], ind,in dd,inddd);\nfor traitons_les_tous in indd do\n if type(args[-1], `=`) \+ and lhs(args[-1]) = 'place' then\n placex := rhs(args[-1]); lesargs : = args[3 .. 1 + placex], traitons_les_tous, args[2 + placex .. -2]\n e lse lesargs := traitons_les_tous, args[3 .. -1]\n end if;\n expr:= su bs(traitons_les_tous = action(lesargs), expr)\nod: expr;\nend proc: \+ " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 665 "`pldx/yply`:= proc (expr_, action) local ind, indd, typ, lesargs, placex, traitons_les_to us, expr;\n# s'applique \340 l'int\351rieur du type de premier niveau \nexpr:= expr_;\ntyp:= \{Int,Sum,Product\}: \nind:= indets(expr, typ(a nything$2));\nindd:= indets(map2(op,1,ind), typ(anything $ 2)): ind:= \+ ind minus indd;\nfor traitons_les_tous in ind do\n if type(args[-1], ` =`) and lhs(args[-1]) = 'place' then\n placex := rhs(args[-1]); lesar gs := args[3 .. 1 + placex], op(1,traitons_les_tous), args[2 + placex \+ .. -2]\n else lesargs := op(1,traitons_les_tous), args[3 .. -1]\n end \+ if;\n expr:= subs(traitons_les_tous= subsop(1=action(lesargs), traito ns_les_tous), expr)\nod: expr; \nend:" }}}{EXCHG {PARA 346 "> " 0 " " {MPLTEXT 1 307 362 "`pldx/yyply`:= proc(expr, action) local ind, ind d, typ;\n# s'applique \340 l'int\351rieur du type de deuxi\350me nivea u\ntyp:= \{Int,Sum,Product\}: \nind:= indets(expr, typ(anything$2));\n indd:= indets(map2(op,1,ind), typ(anything $ 2)): ind:= ind minus indd ;\nsubs(seq(traitons_les_tous=applyop(action, 1, traitons_les_tous, ar gs[3..-1]), traitons_les_tous=indd), expr); \nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 70 "`pldx/xxxply`:= proc() error \"xxxply is \+ gone. Use yyply instead.\" end;" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 369 "pldx[xply] := `pldx/xply` : xsavelib(`pldx/xply ` , `pldx/xply.m` ) :\npldx[xxply] := `pldx/xxply` : xsavelib(`pldx /xxply` , `pldx/xxply.m` ) :\npldx[yply] := `pldx/yply` : xsavelib( `pldx/yply` , `pldx/yply.m` ) :\npldx[yyply] := `pldx/yyply` : xsav elib(`pldx/yyply` , `pldx/yyply.m` ) :\npldx[xxxply]:= `pldx/xxxply` : xsavelib(`pldx/xxxply`, `pldx/xxxply.m`) :" }}}{EXCHG {PARA 0 "" 0 " " {MPLTEXT 0 21 214 "qqq:= Int(1/x/(x+1)*ln(1-x^2),x = 0 .. 1) = Sum(- 1/2*1/n*Sum(1/k,k = 1 .. n)+1/(2*n-1)*(Sum(1/k,k = 1 .. n)-1/n),n = 1 \+ .. infinity);\n`pldx/xply`(qqq,U); `pldx/xxply`(qqq,U); `pldx/yply`(qq q,U); `pldx/yyply`(qqq,U);" }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 19 "convert/D revisite d" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 678 "`pldx/convert/D2`: = proc() options `Copyright Pierre L. Douillet`;\nglobal `convert/D2` \+ ,`liesymm/difftools/initflag`, `liesymm/difftools/init` ;\nlocal tmp; \n`liesymm/difftools/initflag` := true ; readlib( `liesymm/difftools/i nit`)() ;\n print( '`coucou, initializing convert/D2`' ) ; \nsubs(ERRO R= proc() end, '`tools/gensym`'= '`pldx/xclone`', \n readlib( '`liesy mm/convert/D`' )) ;\n tmp:= convert(%, string): \n substring(tmp, 1. .searchtext(\"if\",tmp)-1); \n substring(tmp, searchtext( \"end if\" \+ , tmp)+7..-1):\n `convert/D2`:= parse(cat(%%, %)) : \n`convert/D2`(ar gs) ; end :\npldx[`convert/D2`]:= 'readlib'(`pldx/convert/D2`) : \nxsa velib(`pldx/convert/D2`, `pldx/convert/D2.m`) :" }}}{EXCHG {PARA 346 " > " 0 "" {MPLTEXT 1 307 108 "# xprint(`pldx/convert/D`) ; `pldx/conver t/D`(diff(f(x),x)) ; xprint(`convert/D`) ; xprint(`tools/gensym`); " } }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 33 "xdchvar : chvar \340 deux v ariables " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 626 "`pldx/xdch var`:= proc(qui, chvar, newvar) options `Copyright Pierre L. Douillet` ; \nglobal det, Doubleint, id: local v1, x1, x2, t1, t2, Jac;\n(eval@ subs)(Int= [id], qui); # matching avec des fonctions .... \nif typemat ch(%, [[v1::anything, x1::anything=anything], x2::anything=anything]) \n and op([1,1], chvar)=x1 and op([2,1], chvar)=x2 \n and typematch(ne wvar, [\{t1::name=anything, t1::name\}, \{t2::name=anything, t2::name \}]) \nthen\n subs(chvar, [x1,x2]); Jac:= matrice (map2(diff,%,[t1,t2] ));\n # print(Jac, linalg[det](Jac));\n det(Jac)*subs(chvar, v1); stud ent[Doubleint](%,op(newvar));\nelse \nERROR(\"mauvais matching\")\nfi; end: " }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 78 "pldx[xdchvar]:= `pldx /xdchvar` : xsavelib(`pldx/xdchvar`, `pldx/xdchvar.m`) : " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 7 "xfubini" }}{EXCHG {PARA 352 "" 0 "" {TEXT 313 55 "l'utili sateur est charg\351 de v\351rifier les hypoth\350ses... " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 959 "xfubini0:= proc(expr)\nlocal q uia, quib, su1, su2, vara, su11, varb, expr0, expr_;\noption `Copyrigh t Pierre L. Douillet`;\n if typematch(expr,\n su2::anyfunc(su1::anyfun c(expr_::anything, vara::\{equation, name\}), varb::equation))\n then \n if type(vara, name) then quia := vara else quia := lhs(vara) end i f;\n if type(varb, name) then quib := varb else quib := lhs(varb) end if;\n if has(vara, quib) or has(varb, quia) then\n error vara, var b, \"not a genuine rectangle\"\n end if;\n op(0, su1)( procnamee(op( 0, su2)(expr_, varb)), vara)\n elif\n typematch(expr, su2::anyfunc(su1 ::`*`, varb::equation)) and has(su1, \{Int, Sum\})\n then\n expr0 := \+ select(has, su1, \{Int, Sum\});\n if typematch(expr0, su11::anyfunc(e xpr_::anything, vara::equation)) then\n subs(su11 = op(0, su11)(expr _*remove(has, su1, \{Int, Sum\}), vara), expr0);\n procname(op(0, su 2)(%, varb))\n else expr\n end if\n elif has(expr, \{Int, Sum\}) \n \+ then\n map(procname, expr)\n else expr\n end if\nend proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 160 "id1:=proc(j) option inline; j \+ end proc:\n`pldx/xfubini` := subs(procnamee=id1, eval(xfubini0)): \n`pldx/xxfubini`:= subs(procnamee=procname, eval(xfubini0)):" }}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 80 "pldx[xfubini] := `pldx/x fubini` : xsavelib(`pldx/xfubini`, `pldx/xfubini.m`) :" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 81 "pldx[xxfubini]:= `pldx/xxfubini ` : xsavelib(`pldx/xxfubini`, `pldx/xxfubini.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 7 "xvalval" }}{EXCHG {PARA 352 "" 0 "" {TEXT 313 18 "evaluation interne" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 1060 "`pldx/xvalval`:= proc(expr, plifargs)\nlocal tmq, tmqq, type IS, choix, action, quoi, var, debut, fin, dirac;\nglobal xplif;\noptio n `Copyright Pierre L. Douillet`;\n typeIS := \{Int(anything $ 2), Sum (anything $ 2)\};\n if type(expr, typeIS) then\n tmqq := indets(expr, typeIS);\n tmq := indets(map2(op, 1, %), typeIS);\n if tmq = \{\} t hen tmq := tmqq end if;\n if nargs = 1 then action := value else acti on := Z -> xplif(Z, plifargs) end if;\n choix := proc(expr)\n op(1 , expr);\n if hastype(%, typeIS) then NULL\n elif has(expr, Dira c) then\n typematch(expr,\n Sum(quoi::anything, var::anything = (debut::anything) .. (fin::anything)));\n ((op@op)@indets)(quoi , Dirac(anything));\n dirac := solve(%, var);\n `=`(expr, subs (Dirac = 1, var = dirac, quoi)*Heaviside(dirac - debut + 1/12)*\n \+ Heaviside(fin - dirac + 1/12))\n else `=`(expr, subs(sum=Sum, int= Int, action(expr)))\n end if\n end proc;\n map(choix, tmq);\n s ubs('x' = 'x', %, expr)\n elif hastype(expr, typeIS) then map(procname , expr, args[2..-1])\n else expr\n end if\nend proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 77 "pldx[xvalval]:= `pldx/xvalval` : xsav elib(`pldx/xvalval`, `pldx/xvalval.m`) :" }}}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 29 "xjoli : un utilitaire utile !" }}{EXCHG {PARA 346 "" 0 "" {MPLTEXT 0 21 1845 "`pldx/xjoli`:=proc(expr, nofact)\nlocal _cas, op1, op2, _x, temp, _no fact, de, nu, k, li, elems, res;\nglobal xcombipo, ``, message;\noptio n `Copyright Pierre L. Douillet`;\n# message:= print;\n _cas := \{int, Int, Sum\};\n if nargs = 2 then _nofact := nofact else _nofact := fal se end if;\n if type(expr, function) and member(op(0, expr), _cas) the n\n op1 := op(1, expr);\n op2 := op(2, expr);\n if type(op1, `*`) a nd not _nofact then\n if type(op2, `=`) then _x := op(1, op2) else _ x := op2 end if;\n res:= (``@remove)(has, op1, _x)*subs(op1 = procna me(select(has, op1, _x)), expr);\nmessage(Int[`*`], _x, res); return r es;\n elif type(op1, `+`) then `+`(seq(op(0, expr)(_k, op2), _k = op1 )); res:= procname(%, _nofact);\nmessage(Int[`+`], _x, res); return re s;\n else res:= subs(op1 = procname(op1, _nofact), expr);\nmessage(In t['`?`'], _x, res); return res;\n end if\n elif has(expr, _cas) then \n if type(expr, `*`) then\n temp:= map(procname, args);\n if typ e(temp,`*`) then res:= \n '``'((xcombipo@yjoli)(remove(h as, temp, _cas)))*select(has, temp, _cas)\n else res:= temp\n end \+ if;\nmessage('produit', res); return res;\n else res:= traperror(map( procname, args));\nmessage('autres', res); return res;\n end if\n eli f type(expr, 'matrix') then\n map(denom@op, [entries(expr)]);\n de : = (lcm@op)(%);\n li := map(numer@op, [entries(expr)]);\n nu := %[1]; \n for k in li while nu <> 1 do nu := gcd(nu, k) end do;\n ``(nu/de) *evalm(de*expr/nu)\n elif type(expr, 'Matrix') then\n elems := conver t(map(rhs, op(2, expr)), list);\n map(denom, elems);\n de := (lcm@op )(%);\n li := map(numer, elems);\n nu := %[1];\n for k in li while \+ nu <> 1 do nu := gcd(nu, k) end do;\n LinearAlgebra:-MatrixScalarMult iply(expr, de/nu);\n ``(nu/de)*``(%)\n elif hastype(expr, \{'matrix', 'Matrix'\}) then map(procname, yjoli(expr))\n else expr\n end if;\n % \nend proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 15 "xjoli revisited" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 967 "`pldx/xjoli`:=proc(expr_) local expr, fun, cas_a_traiter, res0, r es1,res2,res3,res4,res5;\nexpr:= subs(sum=Sum, int=Int,product=Product , expr_);\n# retour inchang\351 si rien \340 faire\ncas_a_traiter:= \{ Int, Sum, 'matrix', 'Matrix', Product\}; \nif not has (expr, cas_a_tr aiter) then res0:= expr; return res0 fi;\n# expression appartenant dir ectement \340 l'un des types vis\351s\nif type(expr, function) then fu n:= op(0, expr);\n if member(fun, \{Int, Sum\}) then res1:= `pldx/xjol i/sumint`(args); return res1 fi;\n if member(fun, \{Product\}) then r es2:= `pldx/xjoli/prod`(args); return res2 fi;\n if member(fun, \{'mat rix', 'Matrix'\}) then res3:= `pldx/xjoli/matrice`(args); return res3 \+ fi; \nfi;\n# produit\nif type(expr, `*`) then\n expr:= map(procname, \+ args);\n if type(expr,`*`)\n then res4:= '``'((xcombipo@yjoli)(rem ove(has, expr, cas_a_traiter)))*select(has, expr, cas_a_traiter);\n \+ else res4:= expr;\n fi;\nreturn res4;\nfi;\nres5:= traperror(map(pro cname, args)); return res5;\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 623 "`pldx/xjoli/matrice`:= proc(expr_) local expr, de, l i, nu, k, elems;\nexpr:= map(`pldx/xjoli`, expr_);\nif type(expr, 'mat rix') then\n map(denom@op, [entries(expr)]);\n de := (lcm@op)(%);\n \+ li := map(numer@op, [entries(expr)]);\n nu := %[1];\n for k in li w hile nu <> 1 do nu := gcd(nu, k) end do;\n ``(nu/de)*evalm(de*expr/nu )\nelif type(expr, 'Matrix') then\n elems := convert(map(rhs, op(2, e xpr)), list);\n map(denom, elems);\n de := (lcm@op)(%);\n li := map (numer, elems);\n nu := %[1];\n for k in li while nu <> 1 do nu := g cd(nu, k) end do;\n LinearAlgebra:-MatrixScalarMultiply(expr, de/nu); \n ``(nu/de)*``(%)\nfi; end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 594 "`pldx/xjoli/sumint`:=proc(expr, nofact)\nlocal op1, op2, x_x_, \+ res1,res2,res3;\nglobal xcombipo, ``;\noption `Copyright Pierre L. Dou illet`;\nop1 := `pldx/xjoli`(op(1, expr)); op2 := op(2, expr);\nif typ e(op1, `*`) then op1:= yjoli(op1); \n if type(op2, `=`) then \n x_ x_ := op(1, op2) else x_x_ := op2 end if;\n res1:= (``@remove)(has, op1, x_x_)*subsop(1=select(has, op1, x_x_), expr); return res1;\nelif type(op1, `+`) then \n # print(ici1);\n res2:= add( procname(op(0, ex pr)(k_k_, op2)), k_k_ = convert(op1, list) );\n # print(ici2); \n retu rn res2; \nelse res3:= expr; return res3;\nfi;\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 437 "`pldx/xjoli/prod`:=proc(expr)\nloc al op1, op2, x_x_,a_a_,b_b_, res1, res3;\nglobal xcombipo, ``;\noption `Copyright Pierre L. Douillet`;\nop1 := `pldx/xjoli`(op(1, expr)); op 2 := op(2, expr);\nif type(op1, `*`) and type(op2, `=`) then \n x_x _ := op(1, op2); a_a_, b_b_:= op(op(2, op2));\n res1:= (yjoli@remov e)(has, op1, x_x_)^(b_b_-a_a_+1)*subsop(1=select(has, op1, x_x_), expr ); return res1;\nelse res3:= expr; return res3;\nfi;\nend proc:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 132 "pldx[xjoli]:= `pldx/xjoli` \+ : xsavelib(`pldx/xjoli/prod`, `pldx/xjoli/sumint`, `pldx/xjoli/matrice `,\n `pldx/xjoli`, `pldx/xjoli.m`) :" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 357 "" 0 " " {TEXT 317 28 "xreverse : rebrousse-segment" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 355 "`pldx/xreverse`:= proc(expr) local deb, fin; \noption `Copyright Pierre L. Douillet`;\n if op(0,expr)=Int or op(0,e xpr)=Sum then deb, fin:= op(op([2,2],expr));\n subs(deb .. fin = fin \+ .. deb, -expr)\n elif has(expr, \{Int, Sum\}) then map(procname, args) \n else expr fi; %; end:\npldx[xreverse]:= `pldx/xreverse` : xsavelib (`pldx/xreverse`, `pldx/xreverse.m`) : " }}}}{SECT 0 {PARA 357 "" 0 " " {TEXT 317 10 "xsplit_seg" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 34 "D \351couper une int\351grale en segments" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }{TEXT -1 0 "" }{MPLTEXT 1 307 485 "`pldx/xsplit_seg`:= proc( expr, pts) option `Copyright Pierre L. Douillet`;\nlocal quoi, var, de but, fin,liste; global glok; \nif not (type(expr, 'function') and memb er(op(0, expr), \{'Int', 'int'\})) then \n if has(expr, \{int, Int\}) then return map(procname, args)\n else return expr\nfi; fi;\n x_synta x(subs(Int=Intt,expr), quoi, var, debut, fin);\n liste:= [debut..pts[1 ], seq(pts[k]..pts[k+1], k=1..nops(pts)-1), pts[-1]..fin];\n add(subs( (var=debut..fin)=(var=glok), expr), glok=liste)\nend;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 89 "pldx[xsplit_seg]:= `pldx/xsplit_seg ` : xsavelib(`pldx/xsplit_seg`, `pldx/xsplit_seg.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 28 "xlap (*) : Laplace transform" }} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 168 "xlap:=proc(f, tt)local \+ _t, _s; global t;\n _s := '_s'; if nargs = 1 then _t := t else _t := t t end if; \nunapply(Int(f(_t)*exp(-_s*_t), _t = 0 .. infinity), _s)\ne nd proc:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 40 "xintparts (*) : \+ int\351gration par parties." }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 1949 "`pldx/xintparts`:= proc(F, expr::algebraic, xplifargs_::list ) global xplif, value;\noption `Copyright (c) 1992 by the University o f Waterloo for the bugs. Copyright (c) PLD 2006 for the improvements. \+ For example, Limit and D weren't working fine together at infinity`;\n local f, x, a, b, r, u, up, v, vp, arglist, dira, dirb, ttt, ttt0, xpl ifargs, nodiff;\n## x : variable d'int\351gration\n## r : range et al ors a,b les bornes et dira, dirb les directions aux bornes\n## u, up, \+ v, vp les parties et leurs d\351riv\351es\n\n\nif nargs>=3 then xplifa rgs:= xplifargs_ else xplifargs:= ['azor', positive] fi;\nif nargs = 4 then nodiff:= true else nodiff:= false fi;\n\nif not (type(F, 'functi on') and member(op(0, F), \{'Int', 'int'\})) then \n if has(F, \{int, Int\}) then return map(procname, args)\n else return F\nfi; fi;\n\n \+ f := op(1, F); arglist := op(2 .. nops(F), F); x := op(2, F);\n if \+ type(x, `=`) then r := rhs(x); x := lhs(x) end if;\n u := expr; \n \+ try vp := traperror(normal(f/u)); up := diff(u, x); v := int(vp, x); \n userinfo(2, 'xintparts', print('u'=u, 'up'=up, 'v'=v, 'vp'=vp)) ;\n catch: error \"%1 is not a factor of %2\", u, f;\n end try;\n i f not type (r, 'range') then return u*v - Int(v*up, arglist) fi;\n\n \+ a := op(1, r); b := op(2, r);\n try if hastype([args], 'infinity ') then error fi;\n return eval(subs(x = b, u*v) - subs(x = a, u*v )) - convert(Int(v*up, arglist), D);\n catch : if max(a, b) = a the n dira, dirb:= 'left', 'right' else dirb, dira:= 'left', 'right' fi;\n ttt0:= Limit(u*v, x = b, dirb) - Limit(u*v, x = a, dira); if not nodiff then ttt0:= convert(ttt0, diff) fi;\n try if xplifargs=[] then ttt:= value(ttt0) else ttt:= xplif(ttt0, xplifargs) fi; \n \+ if hastype(ttt, \{'range', 'undefined'\}) then error fi;\n \+ userinfo(2, 'xintparts', print(ttt0=ttt));\n return ttt - Int( v*up, arglist)\n catch : error \"error occured when evaluating \", print(ttt0);\n end try;\n end try;\n end proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 85 "pldx[xintparts]:= `pldx/xintpar ts` : xsavelib(`pldx/xintparts`, `pldx/xintparts.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 81 "xparfrac : s'applique \340 chaque expr ession terminale (la plus interne) en Int, Sum" }}{EXCHG {PARA 346 "> \+ " 0 "" {MPLTEXT 1 307 513 "`pldx/xparfrac`:= proc(expr) option `Copyri ght Pierre L. Douillet`;\nlocal teg, var, qui, typesi;\ntypesi:= \{Int (anything $ 2),Sum(anything $ 2)\};\n if type(expr, typesi) then\n te g, var := op(expr);\n if hastype(teg, typesi) then subs(teg = procnam e(teg, args[2..-1]), expr)\n else\n if type(var, name) then qui := \+ var else qui := lhs(var) end if;\n subs(teg = convert(teg, 'parfrac' , qui, args[2..-1]), expr)\n end if\n elif has(expr, \{Int, Sum\}) th en map(procname, expr, args[2..-1])\n else expr\n end if\nend proc:" } }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 81 "pldx[xparfrac]:= `pldx /xparfrac` : xsavelib(`pldx/xparfrac`, `pldx/xparfrac.m`) :" }}}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 28 "ever_load:= ever_load, x lap:" }}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 68 "De tout un peu (xcol lect, xcs, xpurge, xreg_falsi, xHospital, xplif)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 9 "xcollect " }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 541 "`pldx/xcollect`:=proc(expr, z) options `Copyright Pierre L . Douillet`;\nlocal kmx, k; k:='k': \nif type(z, list) \nthen kmx := \+ nops(z);\n subs(seq(z[gk] = _Env||gk, gk = 1 .. kmx), seq(-z[gk] = -_ Env||gk, gk = 1 .. kmx), expr);\n collect(%, [seq(_Env||gk, gk = 1 .. kmx)], args[3 .. nargs]);\n subs(seq(_Env||gk = z[gk], gk = 1 .. kmx ), %)\nelse k:= 1: collect(subs(z = _Env||k, -z = -_Env||k, expr), _En v||k, args[3 .. nargs]); \n subs(_Env||k = z, %)\nfi end:\npldx[xcoll ect]:= `pldx/xcollect` : xsavelib(`pldx/xcollect`, `pldx/xcollect.m`) \+ : " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 21 "xcs : complete square" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 767 "`pldx/xcs`:= proc(f) option `Copyrig ht Pierre L. Douillet`; \nlocal x,y,u,v,chvar, ravch, g,dg,g0,g1,g2; g lobal xcs2_flag;\nif args[-1]='recurse' then xcs2_flag:=0; RETURN(proc name(args[1..-2])); fi; \nif nargs=1 then return normal(f) fi;\nx:= ar gs[2]; if not has(f,x) then return f fi;\n g:=expand(f); dg:=traperro r(degree(g,x)): \n if dg=2 then \n g0:= coeff(g,x,0): g1:= coeff(g,x ,1): g2:= coeff(g,x,2);\n g2*(x+normal(g1/2/g2))^2 + procname(expand( g0-g1^2/g2/4), args[3..-1])\n elif dg=1 and nargs > 2 and assigned(xcs 2_flag) and xcs2_flag " 0 "" {MPLTEXT 1 307 61 "pldx[xcs]:= `pldx/xcs` : xsavelib(`pl dx/xcs`, `pldx/xcs.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 29 " xpurge : trop petit est nul !" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 640 "`pldx/xpurge`:= proc(zz) local eps; global xpurge0; option \+ `Copyright Pierre L. Douillet`;\nif nargs = 2 then eps := 10^(-args[2] ) else eps := 1/10000000000 fi;\nxpurge0:= proc(z,eps)\n if type(z, \{`+`, `*`, 'Matrix', 'matrix', 'Vector', 'vector', array, set, `=`, \+ list\}) \n then map(procname, z, eps) \n elif type(z, numeri c) then `if`(abs(z) < eps, 0, z)\n elif type(z, complex) then\n \+ if abs(z) < eps then 0 elif abs(Re(z)) < eps then I*Im(z) \n \+ elif abs(Im(z)) < eps then Re(z) else z fi\n else z\n fi \nend; xpurge0(zz,eps); \nend: \npldx[xpurge]:= `pldx/xpurge` : xsavel ib(`pldx/xpurge`, `pldx/xpurge.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 24 "xreg_falsi : ordre 1.6 !" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 152 "`pldx/xreg_falsi_k`:= proc(fu,a, b, _k); a-fu(a)*( b-a)/(fu(b)-fu(a)); if abs(%-b)< 10^(2-Digits) then %,_k else \nprocna me(fu, b, %, _k+1); fi; % end : " }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 250 "`pldx/xreg_falsi`:= proc(fu,a, b) options `Copyright Pierre L . Douillet`;\nglobal `pldx/xreg_falsi_k`;\n`pldx/xreg_falsi_k`(fu,a,b, 0); end:\npldx[xreg_falsi]:= `pldx/xreg_falsi` : \nxsavelib(`pldx/xreg _falsi`, `pldx/xreg_falsi_k`, `pldx/xreg_falsi.m`) : " }}}{EXCHG {PARA 355 "" 0 "" {TEXT 316 35 "`pldx/xreg_falsi`(id^2-2,1.,2.)[1];" } }}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 9 "xHospital" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 633 "`pldx/xHospital`:= proc(expr, ou_ca) options `Copyright Pierre L. Douillet`; \nlocal tryy, var, ici, regl es; global xjoli; \nif type(expr, `=`) then RETURN(map(procname, args) ) fi;\ntypematch(ou_ca, var::name = ici::numeric); tryy := convert([nu mer, denom](expr), D);\nif nargs = 3 then regles := args[3] else regle s := \{var = var\} fi; \nwhile subs(regles, (eval@subs)(var = ici, reg les, regles, tryy)) = [0, 0] do tryy := convert(map(diff, tryy, var), \+ D); od;\n(eval@subs)(var = ici, regles, tryy[1]/tryy[2]); subs(regles, (yjoli@eval@xjoli)(%)) end:\npldx[xHospital]:= `pldx/xHospital` : \nx savelib(`pldx/xHospital`, `pldx/xHospital.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 25 "xplif : simplify assuming" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 250 "xplif9:= proc(ex, li::list) option `Copyri ght Pierre L. Douillet`;\nlocal properties;\nproperties:= seq(li[2*k - 1] :: li[2*k], k = 1 .. 1/2*nops(li)) ;\nvalue(ex) assuming propertie s;\nif nargs = 3 then return args[3](%) else return % end if;\nend pr oc;" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 67 "xclone2:= proc(z ) global qz, ``; ``||qz||(convert(z, string)); end:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 602 "xplif678:= proc(ex,li::list) options `Copyright Pierre L. Douillet`; \nlocal var, chvar, ex2, ex3, ravch, \+ ravch2; global id, xclone2; \n[seq(li[k*2-1],k=1..nops(li)/2)]; var:=c onvert(indets(%), list); \nchvar:= map(id=xclone2, var); ravch:= map(x clone2=id, var); ex2:= subs(chvar, ex);\nuserinfo(5,'xplif', print(chv ar, ravch)); \n(assume@op@subs)(chvar, li); \nravch2:= map(xclone2=id, var); \nuserinfo(5,'xplif', print(chvar, ravch, ravch2, ex2));\nvalue (ex2); if nargs=3 then args[3](value(ex2)) else value(ex2) fi;\nex3:= \+ subs(ravch2, ravch, sum=Sum, int=Int, %); (unassign@op@map)(lhs, ravch ); \nex3; end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 187 "if substring(Version, 7.. 7)=`9` then `pldx/xplif`:= eval(xplif9)\nelif member(substring(Versio n, 7..7),\{`6`,`7`,`8`\}) then `pldx/xplif`:= eval(xplif678)\nelse er ror \"not defined\"\nfi; " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 78 "pldx[xplif]:= `pldx/xplif` : xsavelib(`pldx/xplif`, xclone2, ` pldx/xplif.m`) :" }}}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 37 "Trigono m\351trie (xtrig, sinsin, xknown)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 26 "xtrig : regrouper en (a-b)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 1278 "`pldx/xtrig`:= proc(expr,a,b) options `Copyright \+ Pierre L. Douillet`;\nlocal s1,s2,s3,s4,s5, tmp, mini, k, ss,dd, verb_ , choix;\ntmp:= `if`(nargs=3,[],[args[4..-1]]): \nverb_:= `if`(nargs= 3, false, evalb(tmp[-1]='verb') ); \ntmp:= subs('verb'=NULL, tmp); cho ix:= `if`(tmp=[], false, op(tmp)); \nss:= expand((a+b)/2); dd:= expand ((a-b)/2);\ns1 := subs(cos(a) = 2*cos(ss)*cos(dd)-cos(b),expr); if s 1 = expr then s1 := NULL fi;\ns2 := subs(cos(a) =-2*sin(ss)*sin(dd)+co s(b),expr); if s2 = expr then s2 := NULL fi;\ns3 := subs(sin(a) = 2* sin(ss)*cos(dd)-sin(b),expr); if s3 = expr then s3 := NULL fi;\ns4 \+ := subs(sin(a) = 2*sin(dd)*cos(ss)+sin(b),expr); if s4 = expr then s 4 := NULL fi;\ns5 := subs(sin(a) = (sin(expand(a+b)) - cos(a)*sin(b))/ cos(b) ,expr); \n if s5 = expr then s5 := NULL fi;\ntmp := [s1,s2,s3, s4,s5]; if nops(tmp) = 0 then return expr fi;\nif not verb_ and(choix= false) then\n mini := min(op(map(length,tmp))); \n for k in tmp while \+ mini < length(k) do od; return k ;\nfi; tmp:= [seq([gk,length(gk)],gk= tmp)]; \ntmp:= sort(tmp, (a,b)-> evalb(a[2] " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 357 " " 0 "" {TEXT 317 18 "xknown : know_trig" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 329 "`pldx/xknown`:= proc(expr,var) options `Copyright Pierre L. Douillet`;\nglobal n, knowledge, xplif; local nu;\nif nargs =2 then nu:= var else nu:= n fi;\nknowledge:= ((-1)^nu)^2=1, (-1)^(2*n u)=1, (-1)^(2*nu-1)=-1;\nsubs(Sum='SSum', Int='IInt', knowledge, expr) ;\nsubs(knowledge, 'SSum'=Sum, 'IInt'=Int, xplif(%, [nu, integer]) ); \nend:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 23 "# xmint(`pldx /xknown`);" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 73 "pldx[xkno wn]:= `pldx/xknown` : xsavelib(`pldx/xknown`, `pldx/xknown.m`) :" }}}} {SECT 0 {PARA 357 "" 0 "" {TEXT 317 6 "sinsin" }}{EXCHG {PARA 346 "> \+ " 0 "" {MPLTEXT 1 307 141 "`pldx/sinsin`:= proc(u) simplify(u, \{cos(' t')^2=1-sin('t')^2\}) end:\npldx[sinsin]:= `pldx/sinsin` : xsavelib(`p ldx/sinsin`, `pldx/sinsin.m`) :" }}}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 64 "Matrices (arrdim, evalmm, matrice, xeig, xmk_piv, xtens, isdia g)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 10 "arrdim (*)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 160 "arrdim:= proc(ar) option `Copy right Pierre L. Douillet`; if type(ar, matrix) then linalg['rowdim'](a r) else op(2, eval(ar)); rhs((proc(u);u;end)(%)); fi ; end :" }}}} {SECT 0 {PARA 357 "" 0 "" {TEXT 317 10 "evalmm (*)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 134 "evalmm:= proc(ma) option `Copyright Pierre L. Douillet`; evalm(ma): if type(%,\{matrix\}) then matrix(%) else convert(%,list) fi; end:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 11 "matrice (*)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 76 "u nprotect(matrice): matrice:= proc() linalg['transpose'](matrix(args)); end:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 24 "xmk_piv : pivot de \+ gauss" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 357 "`pldx/xmk_piv` := proc(ma,k) options `Copyright Pierre L. Douillet`;\nglobal diag, r owdim;\nlocal _ma, j; _ma:= diag(1$rowdim(ma)); \nfor j to rowdim(ma) \+ do if k<> j then _ma[k,j]:= -ma[k,j]/ma[k,k] fi od; \nif whattype(ma)= Matrix then return convert(_ma,Matrix) fi; evalm(_ma); end:\npldx[xmk_ piv]:= `pldx/xmk_piv` : xsavelib(`pldx/xmk_piv`, `pldx/xmk_piv.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 41 "xeig : un peu moins bien q ue jordan@evalf" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 560 "`pld x/xeig`:= proc(ma) options `Copyright Pierre L. Douillet`;\nglobal row dim, transpose, eigenvects; \nlocal tmp ; tmp:= [eigenvects( map(evalf ,ma))];\nmap(proc(x) op(2,x) end , tmp); if convert(%,`+`) < rowdim(ma ) then \n ERROR('`matrice non diagonalisable`') fi;\nmap(proc(x) op(o p(3,x)) end , tmp); transpose(matrix(%)); \nif type(ma, Matrix) then r eturn Matrix(%) else return % fi; \nend: \n`pldx/xeigg`:= subs(evalf=e val, %):\npldx[xeig]:= `pldx/xeig` : xsavelib(`pldx/xeig`, `pldx/xeig. m`) :\npldx[xeigg]:= `pldx/xeigg` : xsavelib(`pldx/xeigg`, `pldx/xeigg .m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 25 "xtens : produit te nsoriel" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 1593 "`pldx/xtens `:= proc(a_,b_) options `Copyright Pierre L. Douillet`; \nlocal a,b,ra ,ca,rb,cb, fu, j, k; global coldim, rowdim;\na:=evalm(a_): b:=evalm(b_ );\nra:= rowdim(a): ca:=coldim(a); rb:= rowdim(b): cb:=coldim(b); j:=' j': k:='k': \nfu:= unapply(a[irem(k-1, ra)+1, irem(j-1, ca)+1] * b[iqu o(k-1, ra)+1, iquo(j-1, ca)+1],k,j);\nra:= rowdim(a): ca:=coldim(a); r b:= rowdim(b): cb:=coldim(b); \nmatrix(ra*rb, ca*cb, fu); \nif type( a_,Matrix) then return Matrix(%) else return % fi; \nend:\n\n`pldx/Xte ns`:= proc(a_, b_)\nlocal a, b, n1,n2,n3,n4, fu, j, k;\nglobal coldim, rowdim;\noption `Copyright Pierre L. Douillet`;\n a := evalm(a_);\n b := evalm(b_);\n n1 := rowdim(a);\n n2 := coldim(a);\n n3 := rowdim(b) ;\n n4 := coldim(b);\n j := 'j';\n k := 'k';\n fu := unapply(a[iquo(j \+ - 1, n4) + 1, iquo(k - 1, n3) + 1]*b[irem(k - 1, n3) + 1, irem(j - 1, \+ n4) + 1], j, k);\n matrix(n1*n4, n2*n3, fu);\n if type(a_, Matrix) th en return Matrix(%) else return % end if\nend proc:\n\n\nm2l:= proc(m) : map(op, convert(m,listlist)): \nif type(m, Matrix) then return Vecto r(%) else return % fi; end: \nm2c:= proc(m) global transpose: map(op, \+ convert(transpose(m),listlist)); \nif type(m, Matrix) then return Vect or(%) else return % fi; end:\nl2m:= proc(z) matrix(3,3, convert(z, lis t)); \nif type(z, Vector) then return Matrix(%) else return % fi; end: \nc2m:= proc(z) matrice(3,3, convert(z, list)); \nif type(z, Vector) t hen return Matrix(%) else return % fi; end:\n\npldx[Xtens]:= `pldx/Xte ns` : \n xsavelib(`pldx/Xtens`, m2c, m2l, l2m, c2m, `pldx/Xtens.m`) : \npldx[xtens]:= `pldx/xtens` : xsavelib(`pldx/xtens`, m2c, m2l, `pldx/ xtens.m`) :" }}}{EXCHG {PARA 355 "" 0 "" {TEXT 316 395 "ma:= matrix(2, 2,(j,k)->a||j||k); mb:= matrix(2,2,(j,k)->b||j||k); \nmx:= matrix(2,2, (j,k)->x||j||k); cx:= m2c(%); lx:= m2l(mx);\nmr:= evalm(ma &* mx &* mb ): cr:= m2c(%): lr:=m2l(mr): \nmmc:= matrix(4,4,(j,k)->coeff(cr[j], cx [k]));\nmml:= matrix(4,4,(j,k)->coeff(lr[j], lx[k]));\nmap(expand, eva lm(mmc &* cx- cr)); \nevalm(`pldx/xtens`(ma,transpose(mb))-mmc), evalm (`pldx/xtens`(transpose(mb),ma)-mml);" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 55 "isdiag : les \351l\351ments diagonaux d'une matrice diagonale" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 251 "`pldx/isdiag`:= proc(mm) optio ns `Copyright Pierre L. Douillet`;\nglobal rowdim, iszero, diag; \nseq (mm[gk,gk], gk=1..rowdim(mm)); \nif iszero(mm-diag(%)) then [%] else f alse fi end:\npldx[isdiag]:= `pldx/isdiag` : xsavelib(`pldx/isdiag`,`p ldx/isdiag.m`):" }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }} }{SECT 0 {PARA 357 "" 0 "" {TEXT 317 28 "les m\352mes pour LinearAlgeb ra" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 134 "Xpand:= proc(m) i f type(m, \{matrix, Matrix\}) then map(expand,m)\nelif hastype(m, \{ma trix, Matrix\}) then map(procname,m)\nelse m fi; end:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 248 "Tr:= proc() Transpose(args) en d: \nMatrice:= proc() Transpose(Matrix(args)) end proc:\nEntries:= pro c(m) entries(evalm(m)); (op@map)(op,[%]) end:\nDiag:= proc() DiagonalM atrix(Vector([args])); end:\nEvalm:= proc() convert(evalm(args), Matri x); end: " }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 90 "ever_l oad:= ever_load, arrdim, evalmm, matrice, Matrice, Entries, Tr, Xpand, Diag, Evalm :" }}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 45 "Pr\351sent ation de r\351sultats (xcol, xcol3, xres)" }}{EXCHG {PARA 346 "> " 0 " " {MPLTEXT 1 307 262 "lires:= proc(a_::uneval, b_::uneval, c_::uneval, d_::uneval) local spec;\nspec:= proc(z) if type(z, 'xjoli'(anything)) then \nsubstring(convert(z, string), 7..-2): parse(%); \nelse z fi en d;\n seq(spec(k) = eval(k), k = args)\nend proc:\never_load:= ever_loa d, lires: " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}} {PARA 352 "" 0 "" {TEXT 313 0 "" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 26 "xcol : colonnes ordinaires" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 345 "`pldx/xcol`:=proc(z) option `Copyright Pierre L. D ouillet`; \nif nargs >1 then setattribute([args], 'column') ;\nelif no ps(z)=0 then z ; \nelif type(z,table) then op(eval(z)); '`_table`'(op( %)); procname( % ) \nelse op(0,z), matrix(nops(z),1, unapply(op('j',z) , 'j', 'k' ) ) fi ; end:\npldx[xcol]:= `pldx/xcol`: xsavelib(`pldx/xco l`, `pldx/xcol.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 25 "xcol 3 : truncate & column" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 221 "xcut3:= proc(zz) option `Copyright Pierre L. Douillet`; if type \+ (zz, \{numeric, name\}) then evalf(zz,3) elif \nnops(zz) >7 then procn ame(op(0,zz) (op(1..2,zz), '` ...etc... `',op(-2..-1,zz))) else map(pr ocname, zz) fi end:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 274 "`pldx/xcol3`:=proc(z) option `Copyright Pierre L. Douillet`; global \+ xcut3; if nops(z)=0 then RETURN(z) fi ; \n if type(z,table) then op(e val(z)); '`_table`'(op(%)); procname( % )\n else matrix( nops(z),1, \+ unapply(op('j',z), 'j','k' ) ): op(0,z), map(xcut3, % ): \nfi; end ;" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 76 "pldx[xcol3]:= `pldx/x col3` : xsavelib(`pldx/xcol3`, xcut3, `pldx/xcol3.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 20 "xres (ini, run, cut)" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 202 "`pldx/xres_ini`:= proc(nb_lin::posin t, titres::list(\{symbol, string\})) global res; \noption `Copyright P ierre L. Douillet 1996`; \n res := matrix(nb_lin + 1, nops(titres), titres, 'array'); titres\nend:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 382 "xres_cut:=proc() local j; global res; option `Copy right Pierre L. Douillet 1996`;\nfor j from linalg['rowdim'](res) by - 1 do traperror(assigned(res[j, 1])); \n if % <> false then break fi \+ \nod;\nmatrix(j, linalg['coldim'](res), proc(jj, kk) eval(res[jj, kk]) ; \nif kk=4 and type(%, \{array, table, procedure\}) then % else res[j j, kk] fi end );\n res := map2(subs, res= '_res', %);\nend:" }}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 546 "xres_run:= proc(new_lin ::\{procedure, list, specfunc(procedure,`@`)\}) local col, lres, item; option `Copyright Pierre L. Douillet 1996`; global res; \nif not typ e(new_lin, list) \n then for item from 2 to linalg['rowdim'](res) \n \+ do lres := new_lin(item - 1); for col to nops(lres) do res[item, col] \+ := lres[col] od \n od; RETURN(eval(res))\n else for item to linalg['r owdim'](res) - 1 \n do if traperror(assigned(res[item, 1])) = false t hen break fi \n od;\n for col to nops(new_lin) do res[item, col] := \+ new_lin[col] od;\n RETURN(new_lin)\n fi end:" }}}{EXCHG {PARA 346 "> \+ " 0 "" {MPLTEXT 1 307 100 "pldx[xres_ini]:=`pldx/xres_ini` : xsavelib( `pldx/xres_ini`, xres_cut, xres_run, `pldx/xres_ini.m`) :" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}}}{SECT 0 {PARA 354 "" 0 " " {TEXT 315 52 "Plotting (xfenetre, xput, xput3, displayf, displayg)" }}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 6 "xcolor" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 385 "Digits:=15: xcolor:= 'xcolor': readlib(`pl ot/color`): \nindices(`plot/colortable`): \nsort(map(op, [%])): %[nops (%)/2+1..-1]:\ntmp:= map(z-> (xcolor(z)= COLOUR(RGB, op(`plot/colortab le`[z]))), %):\nselect(has, tmp,\{0.80000000,1.00000000\}):\n(eval@sub s)(xcolor=proc(z) xcolor(z||0) end, 1.00000000=1.0, 0.80000000=0.8, %) :\nassign(%), assign(tmp): assign(xcolor(fill)=COLOR(RGB,0.7,0.7,1.0)) :" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 30 "`pldx/xcolor`:= ev al(xcolor): " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 75 "pldx['x color']:= `pldx/xcolor` : xsavelib(`pldx/xcolor`, `pldx/xcolor.m`) ;" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 8 "xfenetre" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 567 "`pldx/xfenetre`:= proc() option `Cop yright Pierre L. Douillet`; \nlocal tmp, x1, x2, y1, y2, shape, curv; \+ shape:=7;\n curv:= proc(z); \n map( zz->subs('COLOUR'=( ()-> NULL),z z) , op(select(has, z, 'CURVES'))); %; \n end :\n tmp:= (eval@subs)(' CURVES'=op, map(curv, [args] ));\n map( u->op(1,u), tmp); x1:=min(op( %)); x2:=max(op(%%)); \n map( u->op(2,u), tmp); y1:=min(op(%)); y2:=m ax(op(%%));\n `=`('view', [x1-(x2-x1)/shape..x2+(x2-x1)/shape , y1-(y 2-y1)/shape..y2+(y2-y1)/shape]);\nend:\npldx[xfenetre]:= `pldx/xfenetr e` : xsavelib(`pldx/xfenetre`, `pldx/xfenetre.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 28 "xput : nommer un point en 2D" }} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 287 "`pldx/xput`:=proc(pa, n om, n) option `Copyright Pierre L. Douillet`; \nglobal x, y; local eps _: eps_:=1.6; \nif nargs=2 then [ pa[x], pa[y], nom ] \n else [ pa[x] +eps_*cos(n*Pi/4), pa[y]+ eps_*sin(n*Pi/4), nom ] ; fi ; end:\npldx[xp ut]:= `pldx/xput` : xsavelib(`pldx/xput`, `pldx/xput.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 26 "xput3 : nommer un point 3D" }} {EXCHG {PARA 355 "" 0 "" {TEXT 316 352 "`pldx/xput3`:= proc(pa, nom) o ption `Copyright Pierre L. Douillet`; \nglobal eps_, x, y, z ; local k; k:='k': \nif nargs = 2 then [pa[x],pa[y],pa[z], nom] else [args[3 ..5], 0] ; \n evall([pa[x], pa[y], pa[z], nom] + %/ sqrt(sum(%[k]^2, \+ k=1..4))*eps_ );\nfi end ; \npldx[xput3]:= 'readlib'(`pldx/xput3`) : x savelib(`pldx/xput3`, 'eps_', `pldx/xput3.m`) :" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 8 "displayf" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 321 "displayf:= proc() option `Copyright Pierre L. Doui llet`; global display;\n display((op@remove)(type,[args],`=`), 'font' \+ = ['TIMES', 'ROMAN', 20], 'labelfont' = ['TIMES', 'ROMAN', 20],\n ' axesfont' = ['TIMES', 'ROMAN', 20], 'titlefont' = ['TIMES', 'ROMAN', 2 0], 'labels' = ['``', '``'], (op@select)(type,[args],`=`))\nend:" }}}} {SECT 0 {PARA 357 "" 0 "" {TEXT 317 8 "displayg" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 270 "displayg:= proc() global display; option ` Copyright Pierre L. Douillet`;\n display( select(type, [args], functio n), 'font' = ['TIMES', 'ROMAN', 16], \n 'labelfont' = ['TIMES', 'ROMAN ', 16], 'axesfont' = ['TIMES', 'ROMAN', 16], (op@remove)(type,[args], function))\nend proc:" }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 43 "ever_load:= ever _load, displayf, displayg :" }}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 55 "Arbres (prefix_tree, xtree1, xtree, xop, xsubsop, xapp)" }}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 11 "prefix_tree" }}{EXCHG {PARA 346 "> \+ " 0 "" {MPLTEXT 1 307 407 "prefix_tree:=proc(z) option `Copyright Pier re L. Douillet`; local maps;\nmaps:= proc(f ) if nargs=2 then map(f,ar gs[2]) else op(map(f, [args[2..nargs] ])) fi; end ; \n if member(whatt ype(z),\{function\}) or nops(z)>1 then [op(0,z), maps(procname, op(z) ) ] \n elif type(z,table) then op(eval(z)); procname( '`_table`'(op( %)))\n elif type(z,\{numeric,string, symbol\} ) then z \n else map( procname ,z ) ;fi; end:" }}}}{SECT 0 {PARA 357 "" 0 "" {TEXT 317 5 "xt ree" }}{EXCHG {PARA 352 "" 0 "" {TEXT 313 20 "Dealing with a level" }} {PARA 346 "> " 0 "" {MPLTEXT 1 307 660 "xtree1:= proc(z) local kk, opk , line2; option remember, `Copyright Pierre L. Douillet`;\nif nops(z) \+ = 0 then RETURN(z = 'empty')\nelif type(eval(z), \{integer, procedure \}) or (type(z, \{symbol, string\}) and not assigned(z)) then RETURN(N ULL);\nelif type(z, array) then RETURN(z=cat('array_', z))\nelif type( z, table) then op(eval(z)); RETURN( z = (rhs@procname@'_table'@op)(%) \+ )\nelse line2 := array(1 .. nops(z));\n for kk to nops(z) do opk:= op (kk, z) ; \n if evalb(opk = NULL) then '_NULL' elif whattype(opk) \+ = 'exprseq' then 'Seq'(opk) else opk fi;\n line2[kk] := % od; \narray ([[op(0, z), '``' $ (nops(z) - 1)], convert(line2, list) ]);\nfi ; RET URN(z=%) ; end:" }}}{EXCHG {PARA 352 "" 0 "" {TEXT 313 12 "Main routin e" }}{PARA 346 "> " 0 "" {MPLTEXT 1 307 420 "`pldx/xtree`:= proc(expr, n::positive) local su, k; global xtree1; \noption `Copyright Pierre L. Douillet 1996`; \nreadlib('forget')(xtree1); su[1]:= \{xtree1(expr)\} ; \nfor k from 2 to n do map(rhs, %): select(type,%,array): map(op@con vert,%,listlist); map(op, %): \n su[k]:= map(xtree1,%); od; subs( seq( su[gk], gk=1..n), expr); end:\npldx[xtree]:= `pldx/xtree` : \nxsavelib (`pldx/xtree`, xtree1, prefix_tree, `pldx/xtree.m`) :" }}}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 361 "" 0 "" {TEXT 318 47 "Maple-shit pour versions 6,7,8 (et pour 9 ???)" }} {EXCHG {PARA 363 "" 0 "" {TEXT 319 802 "`combine/product`:= proc(F) gl obal `combine/chkmulti`; \nlocal f1, fname, fargs, f, g, x, cofactor, \+ u;\noption `Copyright (c) 1999 Waterloo Maple Inc. for the bugs and PL D 2006 for fixing combine(nf*Sum(b[n-a]*x,p = 0 .. n) ); `;\n u:= 'u': \n if type(F, '`*`') then\n g := map(procname, convert(F, 'list'), ' power', args[2 .. nargs]); f1 := FAIL;\n for x in g do if type(x, \+ '`combine/multiply1`') then f1 := x; break end if end do;\n if f1 = \+ FAIL then return F end if;\n fname := op(0, f1); fargs := op(2 .. no ps(f1), f1);\n g := map(u -> `if`(`combine/chkmulti`(f1, u), [op(1, u ), 1], [1, u]), g) ;\n f := mul(op(1, u), u = g); cofactor := mul( op(2, u), u = g);\n fname(f, fargs)*procname(cofactor, args[2 .. narg s])\n elif nops(F)>1 and hastype(F, '`*`') then map(procname, args)\n \+ else F\n fi\nend:" }}}{EXCHG {PARA 363 "" 0 "" {TEXT 319 751 "`convert /factorial`:= proc(f, x)\nlocal a, k;\noption `Copyright (c) 1991 by t he University of Waterloo. And PLD 2006 for GAMMA(p)=(p-1)!`;\n if typ e(f, 'atomic') then f\n elif nargs = 1 and type(f, 'ratpoly(complex(ex tended_numeric))') then f\n elif nargs = 2 and not has(f, x) then f\n \+ elif type(f, 'function') then\n a := map(procname, f);\n if a <> f t hen procname(a, args[2 .. nargs])\n elif op(0, f) = 'binomial' then o p(1, f)!/(op(2, f)!*(op(1, f) - op(2, f))!)\n elif op(0, f) = 'GAMMA' and nops(f) = 1 then (op(1, f)-1)!\n elif op(0, f) = 'multinomial' t hen op(1, f)!/product('op(k, f)!', k = 2 .. nops(f))\n elif op(0, f) \+ = 'pochhammer' then (op(1, f) + op(2, f) - 1)!/(op(1, f) - 1)!\n else a\n end if\n else map(procname, args)\n end if\nend proc: " }}} {EXCHG {PARA 363 "" 0 "" {TEXT 319 5459 "`convert/hypergeom`:= proc(ex pr::\{sum(algebraic, name = range), Sum(algebraic, name = range)\})\ng lobal `convert/hypergeom/mysubs`, `convert/hypergeom/simplify`, `simpl ify/hypergeom`, RealRange, `convert/hypergeom/getmaxnonposint`, `conve rt/hypergeom/term`, `sum/nonnegs`, `convert/hypergeom/isnonnegint`,\n_ EnvFormal, lasterror; \nlocal a, b, cmp1, cmp2, dmax, f, fcn, g, i, j , ja, jb, missing, nmax, nnints, zeroes, old_b, t1,\nt2, tmp1, tmp2, r eturn_f, local_i, f_new, less_than_b, psi, repsi, absz, z, p, q, conve rges;\noption `Copyright (c) 1992 by the University of Waterloo.`,\n`C opyright (c) PLD 2006 for fixing \"absz := evalf(abs(op(3, t1))); reps i := evalf(Re(psi));\" as requested in Maplev7`;\n local_i:= 'local_i' ;\n f := combine(op(1, expr), 'power');\n i := op([2, 1], expr);\n a : = op([2, 2, 1], expr);\n b := op([2, 2, 2], expr);\n if a <> 0 then\n \+ f := traperror(eval(subs(i = i + a, f)));\n if f = lasterror then\n \+ error '`Summand is singular at %1 = %2 in the interval of summation` ', local_i, local_i + a\n end if;\n if b <> infinity then\n b := b - a;\n if type(b, numeric) then\n if not type(b, integer) then r eturn expr\n elif b = 0 then return subs(i = 0, f)\n elif b = -1 then return 0\n elif b < 0 then return procname(Sum(f, i = b + 1 . . -1))\n end if\n end if\n end if\n end if;\n fcn := 0;\n if tes teq(f) then return expr end if;\n for j from 0 to 15 while fcn = 0 and fcn <> FAIL do\n fcn := `convert/hypergeom/mysubs`(i = j, f)\n end d o;\n if fcn = FAIL then\n error '`Summand is singular at %1 = %2 in t he interval of summation`', i, j - 1 + a\n else\n if j = 16 then retu rn expr end if;\n f := traperror(eval(subs(i = i + j - 1, f)));\n if f = lasterror then return expr end if;\n if b <> infinity then b := \+ b - j + 1 end if\n end if;\n old_b := b;\n if b = infinity or type(b, \+ integer) then\n assume(local_i, integer);\n additionally(local_i, Re alRange(0, b));\n f_new := subs(i = local_i, f)\n else f_new := f; lo cal_i := i\n end if;\n ja := `convert/hypergeom/term`(f_new, local_i); \n if ja = FAIL then return expr end if;\n less_than_b := proc(x)\n l ocal res;\n res := evalb(x <= b); if res::'truefalse' then res else \+ false end if\n end proc;\n zeroes := select(less_than_b, select(type, \{ja[1][], ja[2][]\}, 'negint'));\n if zeroes <> \{\} then\n nmax := -min(op(zeroes));\n return add(eval(f, i = j), j = 0 .. nmax) + proc name(Sum(f, i = nmax + 1 .. b))\n end if;\n userinfo(2, \{'sum', 'hype rgeom'\}, '`Function `', f, '` satisfies the criteria`');\n missing := 0;\n if b <> infinity then\n nmax := `convert/hypergeom/getmaxnonpos int`(ja[1], b);\n dmax := `convert/hypergeom/getmaxnonposint`(ja[2], \+ b);\n if not type(nmax, symbol) and dmax = 'none' then\n cmp1 := `c onvert/hypergeom/isnonnegint`(b + nmax, b);\n if cmp1 = true then b \+ := infinity; _EnvFormal := true\n elif cmp1 = false then\n try mi ssing := 'sum'(f, i = b + 1 .. -nmax); b := infinity\n catch \"nume ric exception\": return expr\n end try;\n _EnvFormal := true\n \+ else return expr\n end if\n elif not (type(nmax, symbol) or type(d max, symbol)) then\n cmp1 := `convert/hypergeom/isnonnegint`(b + nma x, b);\n cmp2 := `convert/hypergeom/isnonnegint`(-b - dmax, b);\n \+ if cmp1 = false then\n try missing := sum(f, i = b + 1 .. -nmax); b := -dmax\n catch \"numeric exception\": return expr\n end try\n elif cmp1 = true and cmp2 = true then b := -dmax\n elif cmp2 <> f alse then return expr\n end if\n elif nmax = 'none' and not type(dm ax, symbol) then\n if not `convert/hypergeom/isnonnegint`(-b - nmax, b) then\n error '`series has undefined terms.`'\n else return ex pr\n end if\n end if\n end if;\n nnints := \{0, b + 1, b, i\} union `sum/nonnegs`(f);\n if b <> infinity then\n g := eval(subs(i = i + b + 1, f));\n jb := `convert/hypergeom/term`(g, i);\n if jb = FAIL th en return expr end if;\n tmp1 := `convert/hypergeom/mysubs`(i = 0, f) ;\n tmp2 := `convert/hypergeom/mysubs`(i = 0, g);\n if tmp2 = FAIL t hen return expr end if;\n tmp2 := `convert/hypergeom/simplify`(tmp2, \+ old_b);\n t1 := traperror(hypergeom(op(ja)));\n if t1 = lasterror th en return expr else t1 := tmp1*`simplify/hypergeom`(t1, nnints) end if ;\n t2 := traperror(hypergeom(op(jb)));\n if t2 = lasterror then ret urn expr else t2 := tmp2*`simplify/hypergeom`(t2, nnints) end if;\n r eturn t1 - missing - t2\n end if;\n return_f := `convert/hypergeom/mys ubs`(i = 0, f);\n if return_f = FAIL then return expr end if;\n t1 := \+ traperror(hypergeom(op(ja)));\n if t1 = lasterror then return expr\n e lse\n if _EnvFormal = true or not type(t1, specfunc(anything, hyperge om)) then\n t1 := `simplify/hypergeom`(t1, nnints); return_f*t1 - mi ssing\n else\n a := op(1, t1);\n p := nops(a);\n b := op(2, t1) ;\n q := nops(b);\n z := op(3, t1);\n psi := sum(b[i], i = 1 .. \+ q) - sum(a[i], i = 1 .. p);\n absz := evalf(abs(op(3, t1)));\n rep si := evalf(Re(psi));\n if type(absz, 'realcons') and type(repsi, 'r ealcons') then converges :=\n p <= q or p = q + 1 and absz < 1 or p = q + 1 and absz = 1 and 0 < repsi or\n p = q + 1 and absz = 1 and z <> 1 and repsi <= 0 and -1 < repsi\n elif type(absz, 'realcons') \+ then converges := p <= q or p = q + 1 and absz <= 1\n else converges := p <= q + 1\n end if;\n if converges then t1 := `simplify/hyper geom`(t1, nnints); return_f*t1 - missing\n else\n if\n map(typ e, \{op(3, t1), op(op(1, t1)), op(op(2, t1))\}, 'realcons') = \{true\} and 0 < op(3, t1)\n then return 'infinity'\n else return 'undef ined'\n end if\n end if\n end if\n end if\nend proc:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 29 "# xmint(`convert/hypergeom`);" }}}{EXCHG {PARA 352 "" 0 "" {TEXT 313 28 "Il faut aussi combine linear " }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{EXCHG {PARA 364 "" 0 "" {TEXT 320 85 "ever_load:= ever_load, `combine/product`, `c onvert/factorial`, `convert/hypergeom`: " }}}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 0 "" }}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 5 "Infos" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 125 "zen_col:= proc(uu, kk); nops(uu): \n (`kernel/transpose`@matrix)(kk, iquo(%,kk)+1, [op(uu), '``'$modp(-%,iq uo(%,kk)+1)]); \nend:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 118 "(eval@subs)(readlib=id, xreadlib=id, [entries(pldx)]):\nsort(map( z-> substring(op(z), 6..-1),%)): 'pldx'= zen_col(%,5);" }}}{EXCHG {PARA 356 "> " 0 "" {MPLTEXT 1 0 10 "ever_load;" }}}{EXCHG {PARA 346 " > " 0 "" {MPLTEXT 1 307 45 "'ever_loaded' = zen_col(sort([ever_load]), 5);" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 89 "ever_load_list:= map(proc(z) cat(` `,z) end, sort([ever_load]));\npldx['ever_loaded']: = %:" }}}}{SECT 0 {PARA 354 "" 0 "" {TEXT 315 5 "Tests" }}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 40 "protect(x_syntax, matrice, yjol i, Intt);" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 69 "xsavelib(' pldx', `pldx/init`, ever_load, 'ever_load_list', `pldx.m`);" }}} {EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 94 "try_mint:= proc(k)\n try xmint(k);\n catch :\n print( convert(k, string), est_KC);\n end try; \nend:" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 67 "map(try_mint, (sort@convert)(eval(\{ssavelib\},1) minus\{\"\"\}, list) );" }}}} {EXCHG {PARA 351 "" 0 "" {TEXT 312 63 "Copyright (c) 1996-2007 Pierre \+ L. Douillet " }}{PARA 352 "" 0 "" {TEXT 313 0 "" } }{PARA 351 "" 0 "" {TEXT 312 11 "Licence GPL" }}{PARA 351 "" 0 "" {TEXT 312 0 "" }}{PARA 351 "" 0 "" {TEXT 312 282 "libre reproduction p our un usage universitaire sous reserve d'une copie compl\350te,\navec reproduction du programme source dont, en particulier, la pr\351sente mention\n \naucune garantie de fiabilit\351. \nen particulier, toute \+ utilisation dans un contexte industriel est vivement d\351conseill\351 e" }}{PARA 352 "" 0 "" {TEXT 313 0 "" }}}{EXCHG {PARA 346 "> " 0 "" {MPLTEXT 1 307 2 "1;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 365 "" 0 "" {TEXT 206 0 "" }}{PARA 366 "" 0 "" {TEXT 296 0 "" }}{PARA 367 "" 0 "" {TEXT 277 0 "" }}{PARA 368 "" 0 "" {TEXT 258 0 "" }}{PARA 369 "" 0 "" {TEXT 285 0 "" }}{PARA 370 "" 0 "" {TEXT 321 0 "" }}{PARA 371 "" 0 "" {TEXT -1 0 "" }}}{MARK "1 1 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 } {PAGENUMBERS 0 1 2 33 1 1 }