เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบžเบฒเบชเบฒเบเบฃเบฑเปˆเบ‡เปเบญเบชเบ›เบฒเป‚เบเบ™

OnWorks favicon

PDL::Indexingp - เบญเบญเบ™เบฅเบฒเบเปƒเบ™เบ„เบฅเบฒเบง

เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ PDL::Indexingp เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเบœเปˆเบฒเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ PDL::Indexingp เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเบผเบฒเบเป†เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ™เป„เบฅเบ™เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเปˆเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เป‚เบ„เบ‡เบเบฒเบ™:

NAME


PDL::Indexing - เบเบฒเบ™เปเบ™เบฐเบ™เบณเบเบฒเบ™เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต เปเบฅเบฐเบเบฒเบ™เบ•เบฑเบ”เบŠเบดเป‰เบ™เบชเปˆเบงเบ™ piddles.

เบžเบฒเบšเบฅเบงเบก


เบซเบ™เป‰เบฒเบœเบนเป‰เบŠเบฒเบเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™ tutorial เบ—เปเบฒเบญเบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐ threading เบ‚เบญเบ‡
PDL.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบžเบฒเบชเบฒ vectorized เบ—เบฑเบ‡เบซเบกเบปเบ”, PDL เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” looping over arrays เป‚เบ”เบเปƒเบŠเป‰ variant เบ‚เบญเบ‡
notation vector เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”. เบเบฒเบ™ looping เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "threading", เปƒเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเปƒเบ™เบ—เบตเปˆเบชเบธเบ” PDL เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ‚เบฐเบซเบ™เบฒเบ™เป€เบžเบทเปˆเบญเป€เบฅเบฑเปˆเบ‡ loops.

เบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เปเบฅเบฐเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบซเบผเบฒเบเบ‚เบญเบ‡ PDL เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ Perl. เบ”เบฑเบ”เบชเบฐเบ™เบตเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ piddle เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบ
เบ—เบฒเบ‡. Threading เบชเบฐเบซเบ™เบญเบ‡ vectorization เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.

เบ„เปˆเบฒเบ‚เบญเบ‡ piddle เบ–เบทเบเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบขเปˆเบฒเบ‡เปเบซเบ™เป‰เบ™เบซเบ™เบฒเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ—เบตเปˆเบžเบดเบกเบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ”เบฝเบง,
เบšเปเปˆเปเบกเปˆเบ™ (เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบเบฒเบ™ Perl เบ›เบปเบเบเบฐเบ•เบด) เป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐ Perl scalar.

เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก "เบงเบดเบ—เบตเบเบฒเบ™" เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ–เบทเบเป€เบญเบตเป‰เบ™เบญเบญเบ - เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Perl เบ—เบตเปˆ
เบ™เบณเปƒเบŠเป‰เบเบฑเบš PDLs. เบˆเบฒเบ perldl (เบซเบผเบท pdl2) shell, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเปเบ•เปˆเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™
เป‚เบ”เบเบเบฒเบ™เบžเบดเบก "?" เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบŠเบทเปˆเบงเบดเบ—เบตเบเบฒเบ™.

เบ‚เบฐเบซเบ™เบฒเบ” เบฅเบฒเบเบเบฒเบ™
piddle (เบ•เบปเบงเปเบ› PDL), เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เปเบกเปˆเบ™ N-dimensional array เบ—เบตเปˆ N เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™ 0 (เบชเปเบฒเบฅเบฑเบš a
scalar), 1 (เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบฝเบ‡), เบซเบผเบทเบ„เปˆเบฒเบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบ
เป‚เบ„เบ‡เบชเป‰เบฒเบ‡. เปเบ•เปˆเบฅเบฐเบกเบดเบ•เบดเบ‚เบญเบ‡ piddle เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบˆเปเบฒเบ™เบงเบ™เบšเบงเบ. "perl"
เบ™เบฒเบเบžเบฒเบชเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเปˆเปเบ•เปˆเบฅเบฐ piddle เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบžเบดเป€เบชเบ”เบ‚เบญเบ‡ Perl scalar (เบงเบฑเบ”เบ–เบธ Perl เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบžเบญเบ™,
เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง - เปเบ•เปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™) เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ—เบธเบเบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰
เป€เบญเบปเบฒ scalar เบ›เบปเบเบเบฐเบ•เบด.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ piddle เป€เบ›เบฑเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ Perl เปเบฅเบฐเบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”
เบ‚เบญเบ‡ piddle เบ—เบตเปˆโ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™:

nelem - เบˆเบณเบ™เบงเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ PDL
ndims - เบ•เบญเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ™ PDL
dims - เบชเบปเปˆเบ‡เบ„เบทเบ™เบฅเบฒเบเบเบฒเบ™เบกเบดเบ•เบดเบ‚เบญเบ‡ PDL เป€เบ›เบฑเบ™เบฅเบฒเบเบŠเบทเปˆ Perl
dim - เบ•เบญเบšเบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบกเบดเบ•เบดเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ PDL

Indexing เปเบฅเบฐ เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™
PDL เบฎเบฑเบเบชเบฒเปเบ™เบงเบ„เบดเบ”เบ‚เบญเบ‡ "เบเบฒเบ™เป„เบซเบฅเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™" เบฅเบฐเบซเบงเปˆเบฒเบ‡ piddle เปเบฅเบฐ indexed subfields เบ‚เบญเบ‡เบ™เบฑเป‰เบ™
เบ›เบดเบง. เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบœเบฐเบฅเบดเบ” indexed subfield เบซเบผเบทเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ”เบฝเบงเบ‚เบญเบ‡ piddle เบžเปเปˆเปเบกเปˆ, เป„เบ”เป‰
เป€เบ”เบฑเบ เปเบฅเบฐ เบžเปเปˆเปเบกเปˆเบเบฑเบ‡เบ„เบปเบ‡เบ•เบดเบ”เบขเบนเปˆเบˆเบปเบ™เบเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบญเบ‡. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบžเบฒเบเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ
เบฎเบนเบšเบžเบฒเบš RGB เบžเป‰เบญเบกเบเบฑเบ™เป€เบ›เบฑเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ„เปˆเบฒ (R,G,B) เปƒเบ™เบฎเบนเบš 3 x 1000 x 1000,
เปเบฅเบฐเป€เบ›เบฑเบ™เบชเบฒเบกเปเบเบ 1000 x 1000 เบเบปเบ™เบชเบตเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ•เบปเบงเปเบ›เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡
เบ•เบปเบงเปเบ›เปƒเบ”เป†เบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ—เบตเปˆเบ•เบดเบ”เบžเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบกเปˆเบ™เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เปƒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”
เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™.

เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ dataflow เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบ”เบฑเบเบ™เป‰เบญเบ
เปเบฅเบฐ PDL เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ:

เบชเบณเป€เบ™เบปเบฒ - เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบชเบณเป€เบ™เบปเบฒ PDL เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡
sever - เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ PDL เบเบฑเบšเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™ (เบ–เป‰เบฒเบกเบต)

เบเบฐเบ—เบนเป‰ เปเบฅเบฐ เบ‚เบฐเบซเบ™เบฒเบ” เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ PDL เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ piddle เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, "sumover" sums เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบฒเบกเบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ (เบกเบดเบ•เบด 0).
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบญเบฒโ€‹เบซเบฒเบ™โ€‹เปƒเบ™ piddle เบชเบฒเบกโ€‹เบกเบดโ€‹เบ•เบดโ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบกเบดโ€‹เบ•เบดโ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เปเบกเปˆเบ™โ€‹เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เป„เบ”เป‰โ€‹
เบกเบดเบ•เบด "เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง" เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ•เปเปˆเบกเบฒเปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ” "เบเบฐเบ—เบนเป‰" เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™
เบžเบฝเบ‡เปเบ•เปˆ looped เบซเบผเบฒเบเบเบงเปˆเบฒ. เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบˆเบฐ transpose เบซเบผเบท Reโ€‹-order เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เบกเบดโ€‹เบ•เบดโ€‹เบ‚เบญเบ‡โ€‹เปเบกเปˆเบ™โ€‹
PDL. เป€เบ•เบฑเบเบ™เบดเบเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป„เบงเบซเบผเบฒเบเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เปเบ•เบฐเบ•เป‰เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ›เปˆเบฝเบ™เบงเบดเบ—เบตเบ—เบตเปˆ PDL เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™. เบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™:

mv - เบเป‰เบฒเบเบกเบดเบ•เบดเปƒเบ”เปœเบถเปˆเบ‡เป„เบ›เบšเปˆเบญเบ™เบญเบทเปˆเบ™เปƒเบ™เบฅเบฒเบเบเบฒเบ™เบกเบดเบ•เบด
xchg - เปเบฅเบเบ›เปˆเบฝเบ™เบชเบญเบ‡เบกเบดเบ•เบดเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบกเบดเบ•เบด, เบ›เปˆเบญเบเปƒเบซเป‰เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบขเบนเปˆเบ„เบปเบ™เบ”เบฝเบง
reorder - เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบชเบปเบกโ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹
clump - clumps เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เบชเบญเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เบซเบผเบทโ€‹เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹เบเบงเปˆเบฒโ€‹
เบšเบตเบš - เบเปเบฒเบˆเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ”เป†เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” 1

เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ เปเบฅเบฐ dummy เบ‚เบฐเบซเบ™เบฒเบ”
ยท เป€เบญเบเบฐเบชเบฒเบ™เบฅเบฐเบ”เบฑเบš Perl threading

ยท threadids

ยทเบ›เบฑเบšเบ›เบธเบ‡เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡ slice

ยทเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบซเบกเปˆเปƒเบ™ slice.pd (affine, lag, splitdim)

ยท reworking เบ‚เบญเบ‡เบงเบฑเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™ threading explicit

Indexing เปเบฅเบฐ เบเบฐเบ—เบนเป‰ เบเบฑเบš PDL


เบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เปเบฅเบฐเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบซเบผเบฒเบเบ‚เบญเบ‡ PDL เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™ looping เบ‚เบญเบ‡
เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ Perl. เบ”เบฑเบ”เบชเบฐเบ™เบตเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ pdl เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบ
เบ—เบฒเบ‡. Threading เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡ looping implicit เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ loops เปเบกเปˆเบ™
เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” C เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”).

เบงเบฑเบ”เบ–เบธ Pdl (เบ•เปเปˆเบกเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "pdls") เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธ Perl เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบซเบผเบฒเบเบกเบดเบ•เบด
arrays เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเปเบšเบš Perl @x เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบเบฅเบฒเบเบŠเบทเปˆเบ‚เปเป‰เบกเบนเบ™ array
เบ–เบทเบเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบขเปˆเบฒเบ‡เปเบซเบ™เป‰เบ™เบซเบ™เบฒเบขเบนเปˆเปƒเบ™เบ•เบฑเบ™เบ”เบฝเบงเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบซเบผเบฒเบเปเบฅเบฐ
เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ” C เป„เบงเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ (เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เปƒเบ™ pdls.

pdls เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ เบกเบต เป€เบ”เบฑเบเบ™เป‰เบญเบ
เบชเบนเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ”เบฑเบ”เบชเบฐเบ™เบตเบซเบผเบฒเบเบ‚เบญเบ‡ PDL เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบ‚เบญเบ‡ "เบžเปเปˆเปเบกเปˆ" เปเบฅเบฐ
"เป€เบ”เบฑเบเบ™เป‰เบญเบ" เบฅเบฐเบซเบงเปˆเบฒเบ‡ pdls. เบซเบผเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบชเป‰เบฒเบ‡ pdl เปƒเบซเบกเปˆเบˆเบฒเบ pdl เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง.
pdl เปƒเบซเบกเปˆเปเบกเปˆเบ™ "เบฅเบนเบ" เปเบฅเบฐเบ„เบปเบ™เป€เบเบปเปˆเบฒเปเบกเปˆเบ™ "เบžเปเปˆเปเบกเปˆ". เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ pdl เปƒเบซเบกเปˆเปเบกเปˆเบ™
เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบซเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡ (เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹) เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เบˆเบฒเบโ€‹
เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ. เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ pdl เบ‚เบญเบ‡เป€เบ”เบฑเบเปเบฅเบฐเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™เบชเบญเบ‡เบ—เบดเบ”เบ—เบฒเบ‡,
เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เป€เบ”เบฑเบเบˆเบฐเบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบเบฑเบšเบžเปเปˆเปเบกเปˆ. (เปเบฒเบเป€เบซเบ”: เป€เบˆเบปเป‰เบฒ
เป€เบšเบดเปˆเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบกเบธเปˆเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ›เบชเบนเปˆเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เป„เบซเบฅเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆ. เบ›เบฐเป€เบžเบ”
เบ‚เบญเบ‡ dataflow เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต (เบเปˆเบฝเบงเบเบฑเบšเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เปƒเบ™เบ™เบฒเบ—เบต)
เบชเบฐเป€เบซเบกเบตเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ›เปˆเบฝเบ™เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบเปˆเบฝเบงเบเบฑเบš dataflow เปƒเบ™ pdl เบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เป‚เบ”เบเป€เบงเบปเป‰เบฒเบงเปˆเบฒ "$a->doflow". เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡ manflow data
เบซเบ™เป‰เบฒ.)

เบญเบตเบเบงเบดเบ—เบตเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบ pdls เบ—เบตเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™ a
เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบงเบŠเบตเป‰เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐเบ—เบตเปˆเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบซเบผเบทเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบšเปเปˆเปเบ›เบเปƒเบˆเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ (เบซเบผเบทเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™) เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบกเบทเปˆเบญเปƒเบ”
manipulated เบœเปˆเบฒเบ™ "เบ•เบปเบงเบŠเบตเป‰". เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ‚เปเป‰โ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบ—เบตเปˆโ€‹เบซเบงเบฑเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เบเบดเปˆเบ‡โ€‹
เบเบฝเบกโ€‹เบ•เบปเบงโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบณโ€‹เบฅเบฑเบšโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบกเบฒโ€‹เป€เบ–เบดเบ‡ (เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบฑเบšเบชเบปเบ™โ€‹เบซเบผเบฒเบ) เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป„เบ›โ€‹เบ”เบณโ€‹เบ™เป‰เบณ
เบ—เบฑเบ™เบ—เบตเปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ›เบปเบเบเบฐเบ•เบด
เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ PDL. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เบ•เบปเบงเบŠเบตเป‰ / dataflow เบ•เบทเปˆเบกเบญเบตเบ
เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเบกเบฒ.

เบกเบตเบชเบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบ‚เบญเบ‡ "เบ•เบปเบงเบŠเบตเป‰ smart" เบ™เบตเป‰: เบ—เปเบฒเบญเบดเบ”
เบซเบ™เบถเปˆเบ‡, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบŠเป‰เบฒเบเบงเปˆเบฒเปเบ•เปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เป„เบ”เป‰
เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป„เบ›เปœเป‰เบฒ เปเบฅเบฐ เบ–เบญเบเบซเบผเบฑเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเบˆเบณเป€เบ›เบฑเบ™. เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ”เบฑเบเบ™เป‰เบญเบ
piddle a ``virtualยด piddle, เป€เบŠเบดเปˆเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบžเบฝเบ‡เปเบ•เปˆ pointer เบเบฑเบšเบžเปเปˆเปเบกเปˆเปเบฅเบฐเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡
เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เบเบดเบ”โ€‹เบˆเบฐโ€‹เบเปเบฒโ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ piddle เบ‚เบญเบ‡โ€‹เป€เบ”เบฑเบโ€‹เป„เบ”เป‰โ€‹เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป„เบ”เป‰โ€‹
เปƒเบ™เบžเปเปˆเปเบกเปˆ. เบ–เป‰เบฒ piddle เป€เบชเบกเบทเบ™เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบกเบฑเบ™เป„เบ”เป‰, PDL
เป‚เบ›เปˆเบ‡เปเบชเบ‡เบเบฒเบเบเบฐเบžเบฒเบšเบ‚เบญเบ‡ piddle virtual เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเบˆเบณเปƒเบŠเป‰เบกเบฑเบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ (1.94_01) เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™ ``affine'', เป€เบŠเบฑเปˆเบ™: เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™
เบฅเบฒเบเบเบฒเบ™เปƒเบ™ piddle เบžเปเปˆเปเบกเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™ (+ เบ„เบปเบ‡เบ—เบตเปˆ) เบˆเบฒเบ
เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ‚เบญเบ‡ piddle เป€เบ”เบฑเบเบ™เป‰เบญเบเป€เบฎเบฑเบ”เปƒเบซเป‰ piddles virtual. เบ—เบธเบเป†เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเบญเบทเปˆเบ™เป† (เบ•เบปเบงเบขเปˆเบฒเบ‡
"->index(...)") เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบต piddles เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ. เบ—เบธเบเป†เบงเบฝเบเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป‚เบ”เบ PP เบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰
piddles (เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบžเบฒเบเบ™เบญเบ).

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบšเปเปˆเบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบซเบผเบทเบšเปเปˆเบšเปเปˆเบกเบตเบœเบปเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”
เปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก: เบ—เบฑเบ‡เบชเบญเบ‡

$a->index(...) .= 5;
$a->slice(...) .= 5;

เบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ $a. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ„เบงเบฒเบกเปƒเบเป‰เบŠเบดเบ”เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ•เปเปˆเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ
เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹.

เบŠเบดเป‰เบ™เบชเปˆเบงเบ™ pdls
เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เปเบ™เบงโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบžเปเปˆโ€‹เปเบกเปˆ / เบฅเบนเบ pdls เปเบกเปˆเบ™โ€‹
เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ•เปˆเบญเบ™เบชเบตเปˆเบซเบฅเปˆเบฝเบกเบ‚เบญเบ‡ pdl เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเป‚เบ”เบ pdl virtual. เป„เบ”เป‰เบกเบตเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒ
เบเบฒเบงเบžเบฝเบ‡เบžเปเบเปˆเบฝเบงเบเบฑเบšเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เปƒเบซเป‰เป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเป€เบžเบฒเบฐเบซเบผเบฒเบ. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš 2D pdl
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš 5x5 (เบกเบฑเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบžเบดเบกเบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบทเปˆเบก
เบซเบ™เป‰เบฒโ€‹เบˆเปโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบ•เบฑเบกโ€‹เป„เบ›โ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบงโ€‹เป€เบฅเบ ;).

pdl> $im = เบฅเปเบฒเบ”เบฑเบš(5,5)
pdl> p $im

[
[ 0 1 2 3 4 ]
[ 5 6 7 8 9 ]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
]

pdl> เบŠเปˆเบงเบ vars
เบ•เบปเบงเปเบ› PDL เปƒเบ™เบŠเบธเบ”เบซเบผเบฑเบ::

เบŠเบทเปˆเบ›เบฐเป€เบžเบ” Dimension Flow State Mem
-------------------------------------------------- --------------
$im Double D [5,5] P 0.20Kb

[เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ "help vars" เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡
เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบš pdls เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš "perldl" เบซเบผเบท "pdl2" shell เบ—เบตเปˆเบกเบฒเบžเป‰เบญเบกเบเบฑเบš PDL. ]

เบ•เบญเบ™เบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ pdl 1-D เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบชเบฑเป‰เบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš, เป€เบงเบปเป‰เบฒ
เป€เบชเบฑเป‰เบ™ 2; เบซเบผเบท pdl เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ„เบนเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš (เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš
เบ‚เบญเบš เปเบฅเบฐ เบ„เบตเบ เบ‚เบญเบ‡ เบฎเบนเบš interlaced เป€เบ™เบทเปˆเบญเบ‡ เบˆเบฒเบ เบžเบถเบ” เบ•เบด เบเปเบฒ peculiar เบšเบฒเบ‡ เบขเปˆเบฒเบ‡ เบ‚เบญเบ‡ เบžเบฒ เบ‚เบญเบ‡ เบžเบงเบ เป€เบฎเบปเบฒ
grabber). เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบชเบฐเบซเบกเบฑเบเป€เบฅเบทเป‰เบญเบเป†เบ‚เบญเบ‡ slices เบญเบทเปˆเบ™เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡ pdl เบงเปˆเบฒ
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบžเบฒเบเบžเบทเป‰เบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบกเบปเบ™เบ‚เบญเบ‡เบฎเบนเบšเบ—เบตเปˆเบกเบตเบ”เป‰เบฒเบ™เป€เบ—เบดเบ‡เปเบฅเบฐเบฅเบธเปˆเบกเบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™. เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰
เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบš (เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹) เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบšเบฑเบ™โ€‹เบฅเบธโ€‹เป„เบ”เป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ”เป‰เบงเบโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™ slice เบ—เบตเปˆโ€‹เบกเบตโ€‹เบญเปเบฒโ€‹เบ™เบฒเบ”โ€‹:

pdl> $line = $im->slice(':,(2)')
pdl> $even = $im->slice(':,1:-1:2')
pdl> $area = $im->slice('3:4,3:1')
pdl> เบŠเปˆเบงเบ vars # เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆ PDL->vars
เบ•เบปเบงเปเบ› PDL เปƒเบ™เบŠเบธเบ”เบซเบผเบฑเบ::

เบŠเบทเปˆเบ›เบฐเป€เบžเบ” Dimension Flow State Mem
-------------------------------------------------- --------------
$even Double D [5,2] -C 0.00Kb
$im Double D [5,5] P 0.20Kb
$line Double D [5] -C 0.00Kb
$area Double D [2,3] -C 0.00Kb

เบ—เบฑเบ‡เบชเบฒเบก "เป€เบ”เบฑเบเบ™เป‰เบญเบ" pdls เปเบกเปˆเบ™เป€เบ”เบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡ $im เบซเบผเบทเปƒเบ™เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡ (เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบซเบผเบฒเบ)
เบเบฒเบ™เบ•เบตเบ„เบงเบฒเบกเปเบฒเบเบŠเบตเป‰เป„เบ›เบซเบฒเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ $im. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ pdls virtual เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบžเบฒเบเบชเปˆเบงเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ•เบฒเบกเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบˆเบฐเบ•เบฑเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบžเบดเบกเป„เบ”เป‰
เปเบ–เบงเบ—เบต 2:

pdl> p $line
[10 11 12 13 14]

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ™ "Flow State" เบ‚เบญเบ‡ $area เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡ เปเบฅเบฐเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰:

pdl> p $ เบžเบทเป‰เบ™เบ—เบตเปˆ
pdl> เบŠเปˆเบงเบ $area
เบ•เบปเบงเปเบ›เบ™เบตเป‰เปเบกเปˆเบ™ Double D [2,3] VC 0.00Kb

เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ $im เปเบฅเบฐ $line เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡เบ•เบฒเบกเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบˆเบฒเบ a
เบงเบฑเบ”เบ–เบธเบ„เป‰เบฒเบเบ„เบทเบ•เบปเบงเบŠเบตเป‰ (เบซเบผเบทเปƒเบ™เบฎเบนเบš dataflow: เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ $line เปเบกเปˆเบ™
เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบเบฑเบš $im):

pdl> $im++
pdl> p $line
[11 12 13 14 15]
pdl> $line += 2
pdl> p $im

[
[ 1 2 3 4 5 ]
[ 6 7 8 9 10 ]
[13 14 15 16 17]
[16 17 18 19 20]
[21 22 23 24 25]
]

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบ™ pdls virtual เบ‚เบญเบ‡เป€เบ”เบฑเบเบ™เป‰เบญเบเบ›เปˆเบฝเบ™ pdl เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ
เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™ (เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบทเป‰เบ™เบ–เบฒเบ™ "=" เบกเบญเบšเบซเบกเบฒเบเบšเปเปˆเป„เบ”เป‰, เปƒเบŠเป‰ ".=" เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบœเบปเบ™เบเบฐเบ—เบปเบšเบ™เบฑเป‰เบ™.
เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™). pdls เป€เบ”เบฑเบ virtual เปเบกเปˆเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: "เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบปเบ”" เบเบฑเบš
"เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš" pdl เบžเปเปˆเปเบกเปˆ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบงเปˆเบฒเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš a
เบ•เบปเบงเบŠเบตเป‰ C. เปเบ•เปˆเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบ•เบปเบงเบŠเบตเป‰ C, เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบซเบผเบฒเบ. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบžเบงเบเป€เบ‚เบปเบฒ
เบฅเบฐเบšเบธเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ (เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เปƒเบซเบกเปˆ) เปเบฅเบฐ
เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ™เบตเป‰เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™ (เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ
เบ–เบทเบเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ PDL เปเบฅเบฐเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก (เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™
เบ•เป‰เบญเบ‡เบเบฒเบ™ hack เบซเบผเบฑเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบซเบผเบทเบขเบฒเบเบเบฒเบเป€เบ›เบฑเบ™ PDL guru เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ› (เบชเปเบฒเบฅเบฑเบš a
เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบชเบฑเบ”เปเบ›เบเบ™เบตเป‰เป€เบšเบดเปˆเบ‡ PDL:: เบžเบฒเบเปƒเบ™)).

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ slice. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ
เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡ slicing เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡ syntax เบชเปเบฒเบฅเบฑเบš string เป„เบ”เป‰
argument เบเบฑเบš slice:

$vpdl = $a->slice('ind0,ind1...')

เบšเปˆเบญเบ™เบ—เบตเปˆ "ind0" เบเปเบฒเบ™เบปเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฑเบšเบ”เบฑเบ”เบŠเบฐเบ™เบต No 0 เบ‚เบญเบ‡ pdl $a, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเปเบเบเบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”เบชเบฒเบกเบฒเบ”เบกเบตเปœเบถเปˆเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

' : ' เปƒเบŠเป‰เบกเบดเบ•เบดเบ—เบฑเบ‡เปเบปเบ”

'n' เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบ”เบฑเบ”เบŠเบฐเบ™เบต "n". เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ™เบตเป‰เปƒเบ™ pdl virtual เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™ 1.
เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฎเบนเบšเปเบšเบšเบ”เบฑเบ”เบชเบฐเบ™เบตเบชเบญเบ‡เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”:

pdl> $column = $im->slice('2,:')
pdl> $row = $im->slice(':,0')
pdl> p $column

[
[เบ›เบต 3]
[เบ›เบต 8]
[15]
[18]
[23]
]

pdl> p $row

[
[1 2 3 4 5]
]

pdl> เบŠเปˆเบงเบ $column
เบ•เบปเบงเปเบ›เบ™เบตเป‰เปเบกเปˆเบ™ Double D [1,5] VC 0.00Kb

pdl> เบŠเปˆเบงเบ $row
เบ•เบปเบงเปเบ›เบ™เบตเป‰เปเบกเปˆเบ™ Double D [5,1] VC 0.00Kb

'(n)' เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบ”เบฑเบ”เบŠเบฐเบ™เบต "n". เบ‚เบฐเบซเบ™เบฒเบ”เบ™เบตเป‰เบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเบˆเบฒเบ pdl เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš (เบญเบตเบ‡เปƒเบชเปˆ
เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” 1 เบชเบฒเบกเบฒเบ”เบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเบชเบฐเป€เบซเบกเบต). เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ™เบตเป‰
เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เปเบฅเบฐโ€‹เบ—เบตเปˆโ€‹เบœเปˆเบฒเบ™โ€‹เบกเบฒโ€‹เบเบฒเบโ€‹เป€เบ›เบฑเบ™โ€‹เบชเบดเปˆเบ‡โ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบกเบญเบšโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เบกเบทโ€‹เบŠเป‰เบฒเบโ€‹เปเบฅเบฐโ€‹เบ‚เบงเบฒโ€‹
เบ”เป‰เบฒเบ™เบ‚เป‰เบฒเบ‡เบ•เป‰เบญเบ‡เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

pdl> $line = $im->slice(':,(0)')
pdl> เบŠเปˆเบงเบ $line
เบ•เบปเบงเปเบ›เบ™เบตเป‰เปเบกเปˆเบ™ Double D [5] -C 0.00Kb

pdl> p $line
[1 2 3 4 5]

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบšเป?

'n1:n2' or 'n1:n2:n3'
เป€เบญเบปเบฒเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบตเบˆเบฒเบ "n1" เบซเบฒ "n2" เบซเบผเบท (เบฎเบนเบšเปเบšเบšเบ—เบตเบชเบญเบ‡) เป€เบญเบปเบฒเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡
เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบˆเบฒเบ "n1" เบซเบฒ "n2" เบ”เป‰เบงเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™ "n3". เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เปเบกเปˆเบ™
เบ„เปเบฒเบ™เบดเบเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบเปˆเบญเบเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป€เบชเบฑเป‰เบ™เบ„เบนเปˆ.

pdl> $even = $im->slice(':,1:-1:2')

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบเบฑเบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ—เบฒเบ‡เบฅเบปเบšเป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบเบฑเบšเบžเบงเบเบกเบฑเบ™เบ›เบปเบเบเบฐเบ•เบด
เบญเบฒเป€เบฃเปเบšเบš Perl เป‚เบ”เบเบเบฒเบ™เบ™เบฑเบšเบ–เบญเบเบซเบผเบฑเบ‡เบˆเบฒเบเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบกเบดเบ•เบด. เบ–เป‰เบฒ "n2" เปเบกเปˆเบ™
เบ™เป‰เบญเบเบเบงเปˆเบฒ "n1" (เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ -1 เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ”เบฑเบ”เบŠเบฐเบ™เบต 4) เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™
virtual pdl เบ–เบทเบเบเบฑเบšเบ„เบทเบ™เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเปˆเบฝเบงเบเบฑเบšเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™.

'*[เบ™]'
เป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ” dummy. เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเปœเบฒเบ”เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™ 1 เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เบซเบผเบทเป€เบ—เบปเปˆเบฒเบเบฑเบš
"n" เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เปƒเบซเป‰.

เบ”เบฝเบงเบ™เบตเป‰, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เปเบ—เป‰เป†เป€เบกเบทเปˆเบญเป€เบซเบฑเบ™เบ„เบฑเป‰เบ‡ เบ—เบณ เบญเบดเบ”. dummy เปเบกเปˆเบ™เบซเบเบฑเบ‡
เบกเบดเบ•เบด? เบกเบดเบ•เบด dummy เปเบŠเบเบกเบดเบ•เบดเบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเบกเบตเบกเบฒเบเปˆเบญเบ™. เปเบ™เบงเปƒเบ”
เปเบกเปˆเบ™เปเบฅเป‰เบงเบšเป? เบ”เบต, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบกเปˆเบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ” 1 เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ‡เปˆเบฒเบ
เบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบเบงเบดเบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ” vector (เบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบš "m") เบเบฑเบš an
"(1,m)" เบซเบผเบท "(m,1)" matrix. เบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™เบ–เบทเปเบ™เปˆเบ™เบญเบ™เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบกเบดเบ•เบดเบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒ.
เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฒเบเบเปˆเบงเบฒเบซเบ™เบถเปˆเบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡
"slice('*5, :')"). เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ dummy เบชเป‰เบฒเบ‡
เบ‚เบฐเบซเบ™เบฒเบ” dummy เปƒเบซเบกเปˆ. เบชเบฐเบ™เบฑเป‰เบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

'([n1:n2[:n3]]=i)'
[เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ” ??????] เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปเบšเบšเบ™เบตเป‰ เป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ” เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›
เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡. เป„เบ”เป‰ diagonal เบˆเบฐเป€เบ›เบฑเบ™เบกเบดเบ•เบด. "i" เบ‚เบญเบ‡ pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบซเบกเปˆเปเบฅเบฐ (เบ–เป‰เบฒ
เบชเปˆเบงเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰) เบˆเบฐเบ‚เบฐเบซเบเบฒเบเป„เบ›เบ•เบฒเบกเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบต
เบฅเบฐเบšเบธเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰
เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบญเบทเปˆเบ™เป†เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰เปƒเบ™เบเบฒเบ™เป‚เบ—เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš slice.
เบžเบฒเบเบชเปˆเบงเบ™เปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ›เบฐเป€เบžเบ”เบ™เบตเป‰. เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰
เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเบ‚เบฐเบซเบ™เบฒเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ”เบฝเบงเบเบฑเบ™ "i" เบ•เป‰เบญเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡
เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปƒเบซเป‰
เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ pdl เบ—เบตเปˆเบซเบกเบฒเบเป€เบ–เบดเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบฒเบกเป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เบ‚เบญเบ‡เบŠเปˆเบญเบ‡
pdl เบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™ (เป€เบ›เบฑเบ™ cube):

$cube = zeroes(5,5,5);
$sdiag = $cube->slice('(=0),(=0),(=0)');

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเป‰เบฒเบ‡ pdl virtual เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เบ•เบฒเบก
เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ. 0, 1 เปเบฅเบฐ 2 เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบดเบ•เบดเบ‚เบญเบ‡เบกเบฑเบ™ 0 (เบกเบดเบ•เบดเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™) เบ‚เบญเบ‡
เบกเบฑเบ™. เบ—เปˆเบฒเบ™เปƒเบŠเป‰ syntax เบ‚เบฐเบซเบเบฒเบเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ‚เบงเบฒเบ‡โ€‹เบˆเบฒเบโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เบซเบผเบทโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹
เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡, e.g

$rect = zeroes(12,3,5,6,2);
$vpdl = $rect->slice('2:7,(0:1=1),(4),(5:4=1),(=1)');

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ $vpdl เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบฐเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™เปƒเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰
เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™:

vpdl(i,j) = rect(i+2,j,4,5-j,j) 0<=i<5, 0<=j<2

[ เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเบ”เบชเบฐเบ™เบตเปƒเบซเบกเปˆ: "$b = $a->index($c);" ???? ]

เบกเบต เบกเบต เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ เบ›เบฐเป€เบžเบ” of เบงเบฝเบเบกเบญเบš เปเบฒเบ in PDL
เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบฅเป‰เบงเบงเปˆเบฒ pdls virtual เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบซเบผเบท
เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ pdl เบžเปเปˆเปเบกเปˆ. เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเปƒเบ™เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ
(เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบเบฒเบ™เปƒเบŠเป‰ "++" เปƒเบ™เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบฅเป‰เบง). เบชเปเบฒเบฅเบฑเบšเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡
เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เป‚เบ”เบ virtual pdl เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ ".=" เบ—เบตเปˆ overloaded.
operator (เป€เบŠเบดเปˆเบ‡เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒ เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ”เป‰เบงเบ เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ). เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เป€เบˆเบปเป‰เบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ›เบปเบเบเบฐเบ•เบด "="?

เบ”เบต, เปเบ™เปˆเบ™เบญเบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ '=' เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ™เบตเป‰
เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ '=' เบšเปเปˆเบชเบฒเบกเบฒเบ” overloaded เปƒเบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™
เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰ '=' เป€เบžเบทเปˆเบญเบžเบฐเบเบฒเบเบฒเบกเบกเบญเบšเบซเบกเบฒเบเบ‚เปเป‰เบกเบนเบ™เปƒเบซเป‰เบเบฑเบšเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ a
pdl เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™ pdl virtual เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบšเบฑเบ™เบฅเบธเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ (เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™
เบ•เบปเบงเปเบ›เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡ pdl virtual (เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบžเบญเบ™) เบˆเบฐเบซเบผเบฑเบ‡เบˆเบฒเบ
เบเบฒเบ™เบกเบญเบšเปเบฒเบเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบžเบญเบ™เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”
เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เป€เบ›เบฑเบ™เบชเปเบฒเป€เบ™เบปเบฒ "เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ" เบ‚เบญเบ‡ rvalue เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš [เบญเบฑเบ™เบ™เบตเป‰เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰
เบˆเบฐเปเบˆเป‰เบ‡เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบตเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ PDL]. เปƒเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ™เบฑเป‰เบ™
เบˆเบฐเบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡ pdl เบเบฑเบšเบžเปเปˆเปเบกเปˆ [เบšเปเปˆเปเบกเปˆเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เปƒเบ™เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบ
เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆ ".=" เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบžเปเปˆเปเบกเปˆ? ].

เบ•เบปเบงเบขเปˆเบฒเบ‡

pdl> $line = $im->slice(':,(2)')
pdl> $line = เบชเบนเบ™(5)
pdl> $line++;
pdl> p $im

[
[ 1 2 3 4 5 ]
[ 6 7 8 9 10 ]
[13 14 15 16 17]
[16 17 18 19 20]
[21 22 23 24 25]
]

pdl> p $line
[1 1 1 1 1]

เปเบ•เปˆเปƒเบŠเป‰ ".="

pdl> $line = $im->slice(':,(2)')
pdl> $line .= เบชเบนเบ™(5โ€‹)
pdl> $line++
pdl> p $im

[
[ 1 2 3 4 5 ]
[ 6 7 8 9 10 ]
[ 1 1 1 1 1 ]
[16 17 18 19 20]
[21 22 23 24 25]
]

pdl> เบžเบดเบก $line
[1 1 1 1 1]

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ—เบปเบ”เปเบ—เบ™เป„เบ”เป‰

pdl> $line .= 0;

เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบกเบญเบšโ€‹เบซเบกเบฒเบโ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡ (เบชเบนเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป€เบ›เบฑเบ™ piddle scalarโ€‹, เบšเปเปˆโ€‹เบกเบตโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹.
เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰ piddle เปƒเบ”).

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเปƒเบ™เบชเบฐเบšเบฑเบš perl เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปเบกเปˆเบ™ lvalue subroutines (เป€เบŠเบฑเปˆเบ™, เบฎเบธเปˆเบ™ 5.6.x เปเบฅเบฐ
เบชเบนเบ‡เบ‚เบถเป‰เบ™เบฅเบงเบกเบ—เบฑเบ‡ perls เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ PDL). เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰
slicing syntax เบ—เบฑเบ‡เบชเบญเบ‡เบ”เป‰เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ:

pdl> $im->slice(':,(2)').= เบชเบนเบ™(5)->xvals-> float

เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบเปˆเบญเบเบ‚เบญเบ‡ lvalue เป€เบ›เบฑเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบšเบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบชเปเบฒเบฅเบฑเบš unwary: perls เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ
เปเบ™เบฐเบ™เปเบฒ "เบฅเบฑเบเบชเบฐเบ™เบฐ" เบ—เบตเปˆเบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡ PDL เบ‚เบญเบ‡ lvalue subs เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ slice เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เปเบฅเปˆเบ™เบžเบฒเบเปƒเบ•เป‰ perl debugger, "perl -d". เบžเบฒเบเปƒเบ•เป‰ debugger, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เปƒเบซเป‰ an
error เป€เบŠเบฑเปˆเบ™: "เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒเบŠเบปเปˆเบงเบ„เบฒเบงเบˆเบฒเบ lvalue subroutine..." เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ syntax.
เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

pdl> ($pdl = $im->slice(':,(2)')).= เบชเบนเบ™(5)->xvals-> float

เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ—เบฑเบ‡เปเบšเบšเบกเบต เปเบฅเบฐเบšเปเปˆเบกเบตเบ•เบปเบงเบ”เบตเบšเบฑเบ เปเบ•เปˆเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เปเบเป‰เบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™ เปเบฅเบฐเบ‡เบธเปˆเบกเบ‡เปˆเบฒเบกเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเบฒเบกเบฒเบ”เบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปเบšเบšเบ™เบตเป‰เป€เบกเบทเปˆเบญ lvalue เปเบฅเบฐ rvalue pdls
เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ pdl เบซเบผเบฑเบ:

# เบเบฑเบšเบ„เบทเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เปเบ–เบงเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ $a
($tmp = $a->slice(':,(1)')).= $a->slice('-1:0,(1)');

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ‚เปเป‰เบกเบนเบ™เบžเปเปˆเปเบกเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบ‚เบงเบฒเบ‚เบญเบ‡เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ„เบฑเบ”เบฅเบญเบเบเปˆเบญเบ™
(เบžเบฒเบเปƒเบ™) เบเบฒเบ™เบกเบญเบšเปเบฒเบ loop เบ”เบณเป€เบ™เบตเบ™เบ•เปเปˆเป„เบ›. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ™เบตเป‰เบˆเบฐเบ‚เบถเป‰เบ™เบเบฑเบš
เบเปˆเบฝเบงเบเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบšเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปเบฅเบฐเป€เบเบทเบญเบšเปเบ™เปˆเบ™เบญเบ™ เบšเปเปˆ เป€เบฎเบฑเบ”เปƒเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™
เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, semantics เบ›เบฐเบˆเบธเบšเบฑเบ™ undefined เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบฅเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ—เบธเบเป€เบงเบฅเบฒ. เป€เบ–เบดเบ‡
เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹

($tmp = $a->slice(':,(1)')).= $a->slice('-1:0,(1)')->เบชเบณเป€เบ™เบปเบฒ;

เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเปเบฒเป€เบ™เบปเบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡ slice เบซเบผเบท

($tmp = $a->slice(':,(1)')).= $a->slice('-1:0,(1)')->sever;

เป€เบŠเบดเปˆเบ‡เปƒเบซเป‰เบœเบปเบ™เป€เบ›เบฑเบ™เบ•เปˆเบญเบ™เบ”เบฝเบงเบเบฑเบ™เปเบ•เปˆเปเบเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡เบŠเบญเบเบเบฑเบšเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™.

เบญเบทเปˆเบ™ เป† เบซเบ™เป‰เบฒเบ—เบตเปˆ เบ—เบตเปˆ manipulate เบ‚เบฐเบซเบ™เบฒเบ”
เป„เบ”เป‰เป€เบงเบปเป‰เบฒเบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡ slice เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™
เบŸเบฑเบ‡เบŠเบฑเบ™เบ”เบฑเบ”เบชเบฐเบ™เบต PDL เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเบ”เบชเบฐเบ™เบตเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เป€เบŠเบฑเปˆเบ™เบเบฑเบ™
(เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ•เปเปˆเบกเบฒ). เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ
เปเบฅเบฐเบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™.

"dummy"
เปƒเบชเปˆโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰ (เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™ 1โ€‹) เปƒเบ™โ€‹เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเบญเบโ€‹.
เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบฅเปโ€‹เบ–เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบเบดเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเบฑเบ™โ€‹เบฅเบธโ€‹เป„เบ”เป‰โ€‹? เปเบฅเป‰เบง, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบต "(X,x,Y)"
("0<=x
pdl (เบšเปˆเบญเบ™เบ—เบตเปˆ "X" เปเบฅเบฐ "Y" เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบธเปˆเบกเบ‚เบญเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบตเบเปˆเบญเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ
เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ” dummy เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เปƒเบชเปˆโ€‹.)

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบ„เบดเบ”เป„เบฅเปˆเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™ x เบ‚เบญเบ‡เบˆเบธเบ”เบชเบนเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš (เบ•เปเปˆเบกเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐ
เบฎเบฝเบ™เบฎเบนเป‰เบงเปˆเบฒเบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบš magic เบ‚เบญเบ‡ implicit เป„เบ”เป‰
threading; เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบฐเบซเบ™เบฒเบ” dummy เบฅเบฐเบซเบฑเบ”เบเบฑเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบฅเบ thread-less;
เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฐเบ—เบนเป‰ PDL เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบžเบงเบเบกเบฑเบ™
เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡).

# เบชเบนเบ™เบเบฒเบ‡
($xd,$yd) = $im-> dims;
$xc = sum($im*xvals(zeroes($xd))->dummy(1,$yd))/sum($im);

เปƒเบซเป‰เบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™:

$xvs = xvals(zeroes($xd));
เบžเบดเบก $xvs->dummy(1,$yd); # เบŠเป‰เบณเปเบ–เบง $yd เป€เบ—เบทเปˆเบญ
$prod = $im*xvs->dummy(1,$yd); # เบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”เบเบฑเบš pixels เบฅเบงเบ‡
# เป€เบชเบฑเป‰เบ™เบŠเป‰เบณเบ‚เบญเบ‡ x-values

เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบซเบผเบธเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ pixel-wise เบฎเปˆเบงเบกเบเบฑเบ™เปเบฅเบฐ
normalizing เบเบฑเบšเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ„เปˆเบฒ pixels เบฅเบงเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบฎเบนเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ
x-coordinate เบ‚เบญเบ‡ "เบชเบนเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบกเบฐเบซเบฒเบŠเบปเบ™" เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš (เบเบฒเบ™เปเบ›เบ„เปˆเบฒ pixels เป€เบ›เบฑเบ™
เบกเบงเบ™โ€‹เบŠเบปเบ™โ€‹เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹) เบŠเบถเปˆเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบฎเบนเป‰โ€‹เบˆเบฑเบโ€‹เป€เบ›เบฑเบ™โ€‹เบชเบนเบ™โ€‹เบเบฒเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹.

เบ•เปเปˆโ€‹เป„เบ›โ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™ (เบˆเบฒเบโ€‹เบˆเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เป‚เบžเบโ€‹เบ„เบงเบฒเบกโ€‹เบŠเบปเบ‡โ€‹เบˆเปเบฒโ€‹) เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบฅเบฒโ€‹เบ„เบฒโ€‹เบ–เบทเบโ€‹เบซเบผเบฒเบโ€‹เบˆเบฒเบโ€‹
เบ‚เบฐเบซเบ™เบฒเบ”เบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒเป€เบ–เบดเบ‡ RGB, ie เบ—เบธเบเป† pixels เบ›เบฐเบˆเบธเบšเบฑเบ™เบ–เบทเป€เบ›เบฑเบ™เบชเบฒเบกเป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบ„เปˆเบฒเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ scalar.
3 เบ„เปˆเบฒเปƒเบ™ triple เปเบกเปˆเบ™, เป‚เบŠเบเบ”เบต, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบงเปˆเบฒ trick เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบตเปƒเบ™เบ—เบตเปˆเบกเบฑเบ™เปเบœเบ™เบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฒเบกเบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡ triple เบเบฑเบš
เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เปเบซเบผเปˆเบ‡โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹:

# เบเบฒเบ™เบ›เปˆเบฝเบ™เบ‚เบฐเปœเบฒเบ”เบชเบตเป€เบ—เบปเบฒเป€เบ›เบฑเบ™ RGB เบฅเบฒเบ„เบฒเบ–เบทเบ
$rgb = $grey->dummy(0,3)

เบ‚เปเบญเบฐเป„เบž, เป€เบ„เบฑเบ”เบฅเบฑเบšเบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบฎเบนเบš B/W เป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบซเป‰เป€เบ›เบฑเบ™เบชเบตเป„เบ”เป‰
เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹. :(

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡ piddles เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ” dummy เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบเบฑเบš
เบเบฒเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ•เบปเบงโ€‹เปเบ—เบ™โ€‹เบžเบฒเบโ€‹เปƒเบ™โ€‹. เบ–เป‰เบฒ piddle เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบฐเปเบ”เบ‡เป€เบ›เบฑเบ™ virtual affine
(``vaffine'') piddle, เบกเบตเบžเบฝเบ‡เปเบ•เปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบ–เบทเบเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰. เปเบ•เปˆเบ–เป‰เบฒ $b เปƒเบ™

$a = เบชเบนเบ™(10000)
$b = $a->dummy(1,10000);

เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบšเบฒเบ‡, เบ—เปˆเบฒเบ™เบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เป„เบ”เป‰เป€เบ•เบตเบšเป‚เบ•เบขเปˆเบฒเบ‡เบเบฐเบ—เบฑเบ™เบซเบฑเบ™เป‚เบ”เบ 100Mb.

"เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡"
เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบชเบญเบ‡โ€‹เบกเบดโ€‹เบ•เบด (เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบกเบตโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ—เบฝเบกโ€‹เบเบฑเบ™โ€‹) เป‚เบ”เบโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบกเบดโ€‹เบ•เบดโ€‹เบ—เบตเปˆโ€‹
เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เบ•เบฒเบก "เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡" เบ•เบฒเบกเบชเบญเบ‡เบกเบดเบ•เบดเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ
เบกเบตเบชเบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ„เบงเบ™เบˆเบฐเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเป€เบ„เบตเบเป€เบฎเบฑเบ”เบšเบฒเบ‡เป€เบชเบฑเป‰เบ™
เบžเบถเบ”เบŠเบฐเบ„เบฐเบ™เบดเบ”. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฑเบเบ„เบต:

# เบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡เบชเบฒเบกเบฑเบเบ„เบต
$e = zeroes(float, 3, 3); # เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบชเบนเบ™
($tmp = $e->เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡(0,1)).= 1; # เบ•เบฑเป‰เบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบฒเบกเป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เป€เบ›เบฑเบ™ 1
เบžเบดเบก $e;

เบซเบผเบทเป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เบญเบทเปˆเบ™เป†:

($tmp = $e->slice(':-1:0')->เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡(0,1)).= 2;
เบžเบดเบก $e;

(เบ—เปˆเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเปเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡ slice เป€เบžเบทเปˆเบญเบเบฑเบšเบ„เบทเบ™เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เปเบ–เบงเบเปˆเบญเบ™
เบ•เบฑเป‰เบ‡เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เบ‚เบญเบ‡เป€เบ”เบฑเบเปƒเบซเบกเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เบ‚เบญเบ‡
parent ?) เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฒเบเบŠเปˆเบญเบ‡เบ‚เบญเบ‡ matrices เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เป„เบ›เบซเบฒเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเปƒเบ™เป„เบฅเบเบฐเบ—เบตเปˆ
matrices เป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”, เบ•เบฒเบกเบฎเบญเบเบ‚เบญเบ‡ matrix เป€เบ›เบฑเบ™:

# เบ•เบดเบ”เบ•เบฒเบกเบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡
$trace = sum($mat->เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡(0,1)); # เบฅเบงเบกเบ—เบธเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฒเบ‡เบ‚เบงเบฒเบ‡

"xchg" เปเบฅเบฐ "mv"
xchg เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบซเบผเบท "transposes" เบชเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰. เบเบปเบ‡เป„เบ›เบเบปเบ‡เบกเบฒ
เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡:

# transpose matrix (เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ reshuffling เบ‚เปเป‰เบกเบนเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐ
#เป€เบฎเบฑเบ”เบชเบณเป€เบ™เบปเบฒ)
$prod = $ax $a->xchg(0,1);

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ $prod เบ„เบงเบ™เบˆเบฐเปƒเบเป‰เบŠเบดเบ”เบเบฑเบš matrix เบ„เบงเบฒเบกเบชเบฒเบกเบฑเบเบ„เบต เบ–เป‰เบฒ $a เป€เบ›เบฑเบ™ matrix orthogonal.
เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง "xchg" เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡ threading เปเบ•เปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบ•เปเปˆเบกเบฒ.

mv เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เปเบšเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™. เบกเบฑเบ™เบเป‰เบฒเบเบกเบดเบ•เบด (เบฅเบฐเบšเบธเป‚เบ”เบเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™
เบžเปเปˆเปเบกเปˆ) เบเบฑเบšเบ•เปเบฒเปเบซเบ™เปˆเบ‡เปƒเบซเบกเปˆเปƒเบ™ pdl เป€เบ”เบฑเบเปƒเบซเบกเปˆ:

$b = $a->mv(4,0); # เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบดเบ•เบดเบ—เบต 5 เบ‚เบญเบ‡ $a เป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฑเบšเบ—เบณเบญเบดเบ”เปƒเบ™
# เป€เบ”เบฑเบเปƒเบซเบกเปˆ $b

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ "xchg" เปเบฅเบฐ "mv" เปเบกเปˆเบ™เบงเปˆเบฒ "xchg" เบžเบฝเบ‡เปเบ•เปˆเบ›เปˆเบฝเบ™เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ‚เบญเบ‡เบชเบญเบ‡
เบกเบดเบ•เบดเบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ "mv" เปเบŠเบเบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”เป„เบ›เบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡
เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบญเบทเปˆเบ™เป†เบ›เบฐเบกเบฒเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก.

"เบŠเปเปˆ"
เบซเบเปเป‰เบซเบผเบฒเบเบกเบดเบ•เบดเป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฝเบง. เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ‚เบญเบ‡เบกเบฑเบ™เบฅเบฐเบšเบธเบงเปˆเบฒเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเปƒเบ”
เบ‚เบญเบ‡เปเบซเบผเปˆเบ‡ pdl เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบเบธเบš (เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบ—เปเบฒเบญเบดเบ”). เป€เบ›เบฑเบ™ (เบเบญเบกเบฎเบฑเบš
unrealistic) เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™ 3D pdl เบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ stack เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบ—เปˆเบฒเบ™
เบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰เบญเปˆเบฒเบ™เปƒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบ•เปˆเบฅเบฐเบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป€เบงเบฅเบฒ 1D
เบŠเบธเบ” เปเบฅเบฐเป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบฅเบฝเบ‡เปเบšเบšเบ™เบฑเป‰เบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบ”เบดเบˆเบดเบ•เบญเบ™เบ”เป‰เบงเบเบเบญเบš
grabber. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เป€เบ›เบฑเบ™ array เบ‚เบญเบ‡เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบงเบปเป‰เบฒ

pdl> $seqs = $stack->เบเบธเปˆเบก(2โ€‹)
pdl> เบŠเปˆเบงเบ vars
เบ•เบปเบงเปเบ› PDL เปƒเบ™เบŠเบธเบ”เบซเบผเบฑเบ::

เบŠเบทเปˆเบ›เบฐเป€เบžเบ” Dimension Flow State Mem
-------------------------------------------------- --------------
$seqs Double D [8000,50] -C 0.00Kb
$stack Double D [100,80,50] P 3.05Mb

เบšเปเปˆเบชเบปเบกเบˆเบดเบ‡เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ, เบŠเบญเบšเปเบงเบเป‰เบญเบ‡เบˆเบธเบฅเบฐเบ—เบฑเบ” confocal เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™ (เบšเบฒเบ‡เบ„เบฑเป‰เบ‡)
เบ—เบฒเบ‡เบ™เบตเป‰. เปเบ•เปˆเป€เบฅเบทเป‰เบญเบเป†เบ—เปˆเบฒเบ™เปƒเบŠเป‰ clump เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ implicit
เบซเบผเบทเบเบฐเบ—เบนเป‰เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡.

เป‚เบ—เบซเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ to เบ”เบฑเบ”เบชเบฐเบ™เบต เบซเบ™เป‰เบฒเบ—เบตเปˆ เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ be เบ•เปˆเบญเบ‡เป‚เบชเป‰
เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเบ”เบชเบฐเบ™เบต
เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ•เปˆเบญเบ‡เป‚เบชเป‰เบขเปˆเบฒเบ‡เบ”เบตเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบงเบฑเบ”เบ–เบธเป€เบ”เบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบซเบกเปˆ.
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ”เบฑเบ”เบŠเบฐเบ™เบตเบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบˆเบฐเบ•เบดเบ”เบ•เบฒเบกเบชเบดเปˆเบ‡เบ—เบตเปˆ
เบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”, eg

$a->xchg(0,1)->mv(0,4)

เบเป‰เบฒเบเบกเบดเบ•เบด 1 เบ‚เบญเบ‡ $a เป„เบ›เบซเบฒเบ•เบณเปเปœเปˆเบ‡ 4 เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบงเบฅเบฒเบ—เบตเปˆเบ„เบณเบชเบฑเปˆเบ‡เบ—เบตเบชเบญเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”
เบกเบดเบ•เบดเป€เบ”เบตเบก 1 เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบ•เปเบฒเปเปœเปˆเบ‡ 0 เบ‚เบญเบ‡เบฅเบนเบเปƒเปเปˆเบ—เบตเปˆเป€เบญเบตเป‰เบ™ "mv"
เบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบ„เบดเบ” (เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ).

เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™ เบงเบฝเบเบกเบญเบš เปเบฒเบ ('.=') เปเบฅเบฐ dummy เบ‚เบฐเบซเบ™เบฒเบ”
sublety เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบกเปˆเบ™เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰ pdls เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡
เบ‚เบฐเปœเบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ 1. เบเบฒเบ™เบกเบญเบšเปเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ (เป‚เบ”เบเปƒเบŠเป‰ ".=") เบ–เบทเบเบซเป‰เบฒเบกเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบผเบฒเบเบญเบฑเบ™
เบ‚เบญเบ‡ lvalue pdl เบŠเบตเป‰เป„เบ›เบซเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡เบžเปเปˆเปเบกเปˆ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡
เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ‚เบญเบ‡โ€‹เบžเปเปˆโ€‹เปเบกเปˆโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบšเปเปˆโ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹เปเบฅเบฐโ€‹เบˆเบฐโ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบ—เบตเปˆโ€‹
เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

$a = pdl [1,2,3];
$b = $a->dummy(1,4);
$b .= yvals(zeroes(3,4));

เบชเบฒเบกเบฒเบ”เบœเบฐเบฅเบดเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ undefined เป‚เบ”เบ PDL เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ
เป€เบกเบทเปˆเบญ PDL เป„เบ”เป‰เบฎเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ™, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ”เบต.

เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡ dataflow เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡ dummy เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ–เบทโ€‹เบงเปˆเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบซเบฑเบ™โ€‹เบ›เปˆเบฝเบ™ irreversible (เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹เบ„เปเบฒโ€‹เบชเบฑเบšโ€‹เบ•เปˆเบฒเบ‡เป†โ€‹เปƒเบ™
Thermodynamics) เป€เบŠเบดเปˆเบ‡เบเบตเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ—เบฒเบ‡เบซเบผเบฑเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบกเบญเบšเปเบฒเบเปƒเบซเป‰เบžเปเปˆเปเบกเปˆ (เป€เบˆเบปเป‰เบฒ
เป„เบ”เป‰เบฎเป‰เบญเบ‡เบ‚เปเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เป‚เบ”เบเปƒเบŠเป‰ ".=" เบเบฒเบ™เบกเบญเบšเปเบฒเบ). เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบฅเบฐเบงเบฑเบ‡
เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบšเปเบฅเบดเบšเบปเบ”เบ‚เบญเบ‡ threading เบ—เบตเปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เบฐเบซเบ™เบฒเบ” dummy เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™ implicitly
เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™ loop thread (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰).

เป€เบซเบ”เบœเบปเบ™ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ เป„เบ”เป‰ เบžเปเปˆเปเบกเปˆ/เบฅเบนเบ (เบซเบผเบท "เบ•เบปเบงเบŠเบตเป‰") เปเบ™เบงเบ„เบดเบ”
[เบญเบฑเบ™โ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เบฅเปโ€‹เบ–เป‰เบฒโ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹]

XXX เบกเบตเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
XXXX เปƒเบ™เบšเปเบฅเบดเบšเบปเบ”เบ‚เบญเบ‡ threading
XXXXXX เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰ เปเบฅเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™ pdl
(เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒ secโ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹)
XXX เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
XXXXX เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบšเบžเบฒเบเบชเปˆเบงเบ™ / เบขเบนเปˆ, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบงเบดเบ—เบตเบเบฒเบ™ to เป€เบฎเบฑเบ”เปƒเบซเป‰ เบชเบดเปˆเบ‡เบ—เบตเปˆ เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡
[ XXXXX เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡เป€เบกเบทเปˆเบญเบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบ•เบปเบเบฅเบปเบ‡เบ•เบทเปˆเบกเบญเบตเบเป€เบฅเบฑเบเบ™เป‰เบญเบ ]

** เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™ (xsub routine interfacing C lib functionโ€‹)
** เบšเบฑเบ™โ€‹เบฅเบธโ€‹เป„เบ”เป‰โ€‹เปเบ™เบงโ€‹เปƒเบ” (-โ€‹> เบ—เบฒเบ‡โ€‹เบ”เป‰เบฒเบ™โ€‹เบฎเปˆเบฒเบ‡โ€‹เบเบฒเบโ€‹)
** เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบš (isphysical (เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹)โ€‹)
** -> เบชเปเบฒเป€เบ™เบปเบฒเปเบฅเบฐ -> sever

เบเบฐเบ—เบนเป‰


เปƒเบ™เบงเบฑเบเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ„เปเบฒเบชเบฑเบšเปƒเบ™เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ„เบฒเบงเปเบ•เปˆ
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเปเบ—เป‰เป†เบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบเปˆเบฝเบงเบเบฑเบš "threading" เบเบฑเบš pdls. เบ„เปเบฒเบงเปˆเบฒ threading เบกเบต
เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เบซเบผเบฒเบโ€‹เปƒเบ™โ€‹เบ‚เบปเบ‡โ€‹เป€เบ‚เบ”โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹. เบžเบฒเบเปƒเบ™เบ‚เบญเบšเบ‚เบญเบ‡ PDL เบกเบฑเบ™
เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบงเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆ looping implicitโ€‹. เบกเบฑเบ™ implicit เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ
เบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบซเบเบฑเบ‡เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ›เบดเบ”เบšเบฑเบ‡ for-loops เปเบ•เปˆเบงเปˆเบฒ loops เปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
(เบซเบผเบท 'magically') เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ PDL เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdls เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบ™เบตเป‰
เบ„เบงเบ™เปƒเบซเป‰เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบณเบญเบดเบ”เปเบเปˆเป€เบˆเบปเป‰เบฒเบงเปˆเบฒ เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เปœเป‰เบฒเบ—เบตเปˆเบเบฒเบ™เปเบนเบ™เปƒเบŠเป‰เบ”เบฑเบ”เบŠเบฐเบ™เบต/เบ‚เบฐเปœเบฒเบ”เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบš
เปƒเบ™เบงเบฑเบเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡
เบเบฐเบ—เบนเป‰. เบชเปˆเบงเบ™เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ threading (เบ™เบญเบเบˆเบฒเบ pdls เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡) เปเบกเปˆเบ™ a
เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบฎเบนเป‰ threading (เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™ PDL:: PP เบฅเบงเบšเบฅเบงเบกเบซเบ™เป‰เบฒเบ—เบตเปˆ) เปเบฅเบฐ
เบงเปˆเบฒ pdls เปเบกเปˆเบ™ "เบเบฐเบ—เบนเป‰" เบซเบผเบฒเบเบเบงเปˆเบฒ. เบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบฐเบเบฒเบเบฒเบก
เปƒเบซเป‰เบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบชเบปเบกเบšเบนเบ™เปเบšเบš เบเบฐเบ—เบนเป‰ - a เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡
เบกเบตเบชเบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡ threading. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒ
"เบเบฐเบ—เบนเป‰ implicit". เปƒเบซเป‰เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™ looping เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™
เบซเบผเบฒเบเบเบงเปˆเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ pdl. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฎเบนเบšเบžเบฒเบš RGB เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒ.
เบ‚เบฐเปœเบฒเบ”. เบฎเบนเบšเบžเบฒเบš RGB เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เป‚เบ”เบ 3-dim pdl "im(3,x,y)" เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบตเบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”.
เบกเบตเบชเบฒเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบตเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ pixels เปเบฅเบฐ "x" เปเบฅเบฐ "y" เปเบกเปˆเบ™ width เปเบฅเบฐเบ„เบงเบฒเบกเบชเบนเบ‡เบ‚เบญเบ‡
เบฎเบนเบšเบžเบฒเบš, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เปเบ›เบ‡เป€เบ›เบฑเบ™เบชเบฒเบกเบชเบตเบ•เบฒเบกเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰
pixels เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบนเบ™เบ„เปˆเบฒเบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒ (เป€เบžเบทเปˆเบญเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบžเบตเปˆเบ™เป‰เบญเบ‡
เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบธเป‰เบ™เบ—เบตเปˆเป€เบŠเบฅเบ•เบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบงเบ”เบžเบปเบšเบชเบตเบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธ
เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบŠเบฒเบ”โ€‹เบˆเบฒเบโ€‹เบชเบตโ€‹เป„เบ›โ€‹เป€เบ›เบฑเบ™โ€‹เบชเบตโ€‹เบ‚เบตเป‰โ€‹เป€เบ–เบปเปˆเบฒโ€‹. เบ›เบฐเบกเบฒเบ™เบงเปˆเบฒ
เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบตเปเบกเปˆเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบญเบ‡เบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒเบˆเบฒเบเปเบ•เปˆเบฅเบฐ RGB triplet (r,g,b) เป€เบ›เบฑเบ™.
เบฅเบงเบกเบ™เป‰เบณเปœเบฑเบ

grey-value = 77/256*r + 150/256*g + 29/256*b =
เบžเบฒเบเปƒเบ™([77,150,29]/256, [r,g,b])

เบšเปˆเบญเบ™เบ—เบตเปˆเปเบšเบšเบŸเบญเบกเบชเบธเบ”เบ—เป‰เบฒเบเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ 3-vector
เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบ™โ€‹เป‰โ€‹เปเบฒโ€‹เบซเบ™เบฑเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบชเบตโ€‹เปเบ”เบ‡โ€‹, เบชเบตโ€‹เบ‚เบฝเบงโ€‹เปเบฅเบฐโ€‹เบชเบตโ€‹เบŸเป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบกเบต 3 vector เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบชเบต. เบ•เบฒเบกเบ›เบฐเป€เบžเบ™เบต, เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹:

@dims=$im-> dims เบ‚เบญเบ‡เบ‚เป‰เบญเบ;
# เบ—เบตเปˆเบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ dim เบ—เปเบฒเบญเบดเบ”เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ (3), เปเบฅเบฐเบญเบทเปˆเบ™เป†
$grey=zeroes(@dims[1,2]); # เป€เบฎเบฑเบ” pdl เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
$w = pdl [77,150,29] / 256; # vector เบ‚เบญเบ‡เบ™เป‰เบณเปœเบฑเบ
เบชเปเบฒเบฅเบฑเบš ($j=0;$j
เบชเปเบฒเบฅเบฑเบš ($i=0;$i
# เบ„เบดเบ”เป„เบฅเปˆเบ„เปˆเบฒ pixels
$tmp = inner($w,$im->slice(':,(i),(j)'));
set($grey,$i,$j,$tmp); # เปเบฅเบฐเบ•เบฑเป‰เบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™เบฎเบนเบšเบชเบตเป€เบ—เบปเบฒ
}
}

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบ”เบฝเบงเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ threading (เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ "เบžเบฒเบเปƒเบ™" เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบฎเบฑเบšเบฎเบนเป‰ threading
เบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ PDL::Primitive package)

$grey = เบžเบฒเบเปƒเบ™($im,pdl([77,150,29]/256));

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเป€เบชเบฑเป‰เบ™เบ”เบฝเบงเบ—เบตเปˆเบชเป‰เบฒเบ‡ pdl $grey เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เบˆเปเบฒเบ™เบงเบ™เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ loops เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” ( loops เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™
เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” C เป„เบงเบขเบนเปˆเปƒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ PDL). เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ•เบดเบ”เปœเบตเป‰เป€เบˆเบปเป‰เบฒเบขเบนเปˆ
เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™ 'magic' เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰.

เบงเบดเบ—เบตเบเบฒเบ™ เบšเปเปˆ เป„เบ”เป‰ เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡ เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ ?
เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ„เบงเบ™เบชเบฑเบ‡เป€เบเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบ—เบธเบเป†เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™ threading เบฎเบนเป‰ (เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบกเบต
เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบˆเบฒเบเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบซเบเปเป‰เป‚เบ”เบ PDL::PP, เบ•เปเปˆเบกเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒ PP-
functions) เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ” (เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ) เบเปเบฒเบ™เบปเบ” (เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบ)
เบˆเบฒเบเปเบ•เปˆเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ pdl เบ‚เบญเบ‡เบกเบฑเบ™. เบŸเบฑเบ‡เบŠเบฑเบ™เบžเบฒเบเปƒเบ™เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบชเบญเบ‡เบกเบดเบ•เบดเบซเบ™เบถเปˆเบ‡ (เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™)
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เบ„เบดเบ”เป„เบฅเปˆเบ„เปˆเบฒเบชเบนเบ™เบกเบดเบ•เบดเบกเบดเบ•เบด (เบœเบปเบ™เบœเบฐเบฅเบดเบ”). เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบงเปˆเบฒ
เบชเบฑเบ™เบเบฒเบฅเบฑเบเป€เบ›เบฑเบ™ "เบžเบฒเบเปƒเบ™((n),(n),[o]())" เปเบฅเบฐเป€เบญเบตเป‰เบ™เบกเบฑเบ™เบงเปˆเบฒ "เบžเบฒเบเปƒเบ™". เบฅเบฒเบเป€เบŠเบฑเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆ n เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เบฑเป‰เบ™. n เบ„เบงเบฒเบกเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบ—เบตเบชเบญเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบกเบตโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ—เบฝเบกโ€‹เบเบฑเบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบญเบปเบฒ
เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹เบžเบฒเบโ€‹เบ™เบญเบโ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบชเบญเบ‡ 1D vectors เป€เบžเบทเปˆเบญโ€‹เบชเป‰เบฒเบ‡ 2D matrixโ€‹, เบ‚เบฝเบ™โ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เบฅเบฑเบโ€‹เป€เบ›เบฑเบ™โ€‹
"เบ™เบญเบ(เบ™),(m),[o](n,m))". "[o]" เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ™เบตเป‰ (เบ—เบตเปˆเบ™เบตเป‰เบ—เบตเบชเบฒเบก)
argument เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบธเบ”เบ—เป‰เบฒเบ, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบ—เบตเบชเบญเบ‡
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบปเบเบฅเบปเบ‡, เปเบ•เปˆเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบชเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปเบ™เบงเปƒเบ”
เบ‚เบญเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ” pdl.

เบ™เบตเป‰เปเบกเปˆเบ™เบˆเบธเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ threading เบชเบธเบ”เบ—เป‰เบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบเบก. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป‚เบ—เบซเบฒ PP-functions เบเบฑเบš
pdls เบ—เบตเปˆเบกเบต เป€เบžเบตเปˆเบกเป€เบ•เบตเบก เบเปˆเบงเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เบ‚เบฐเบซเบ™เบฒเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ pdl
arguments เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™ threaded
เป€เบเบตเบ™. เบ‚เปโ€‹เปƒเบซเป‰โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบ™เบตเป‰โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹เบ™เบตเป‰โ€‹

$grey = เบžเบฒเบเปƒเบ™($im,$w); # w เปเบกเปˆเบ™ vector เบ™เป‰เปเบฒเบซเบ™เบฑเบเบˆเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡

เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰ $w เปเบกเปˆเบ™ 1D เปเบฅเบฐโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบซเบผเบฑเบโ€‹, $im เปเบกเปˆเบ™ 3Dโ€‹, เบซเบผเบฒเบโ€‹
เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ "(3,x,y)". เบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ” (เบ‚เบฐเบซเบ™เบฒเบ” 3) เปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™
เบ—เบตเปˆเบเบปเบ‡เบเบฑเบš (เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบฒเบเปƒเบ™) เบกเบดเบ•เบดเบ—เบณเบญเบดเบ” (เปเบฅเบฐเบ”เบฝเบง) เบ‚เบญเบ‡ $w. เบ—เบตเปˆโ€‹เบชเบญเบ‡
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เบ—เปเบฒโ€‹เบญเบดเบ” (เบ‚เบญเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ” "xโ€‹"โ€‹) เปเบฅเบฐโ€‹เบ—เบตโ€‹เบชเบฒเบกโ€‹เปเบกเปˆเบ™โ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹
เบ‚เบฐเบซเบ™เบฒเบ”เบเบฐเบ—เบนเป‰ (เบ‚เบฐเบซเบ™เบฒเบ” "y"). pdl เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ” (เบ•เบฒเบกโ€‹เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เป‚เบ”เบ
เบ•เบฑเป‰เบ‡ $grey เป€เบ›เบฑเบ™ "null" เบเปˆเบญเบ™เบเบฒเบ™เป€เบญเบตเป‰เบ™). เบ‚เบฐเบซเบ™เบฒเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบ
เบ•เปเปˆเบ—เป‰เบฒเบ loop เบ‚เบฐเบซเบ™เบฒเบ” (เบ—เบตเปˆเบ™เบตเป‰ "(x,y)") เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฑเบ (เบ—เบตเปˆเบ™เบตเป‰ 0D) เบเบฑเบš
เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบ‚เบฐเปœเบฒเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡ pdl เบ—เบตเปˆเบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” (เบ—เบตเปˆเบ™เบตเป‰ "0D+2D=2D" เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš 2D
เบ‚เบฐเบซเบ™เบฒเบ” "(x,y)").

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบซเบผเบฑเบเบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบชเบญเบ‡
1D vectors "x*y" เป€เบงโ€‹เบฅเบฒโ€‹เบเบฑเบš $w เปเบฅเบฐโ€‹เบชเปˆเบงเบ™ 1D เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เปเบšเบš "(':,(i),(j)')" เบ‚เบญเบ‡ $im เปเบฅเบฐ
เบเปเบฒเบ™เบปเบ”เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ” pdl "$grey(i,j)" เบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ
เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบ

$grey(0,0) = f($w,$im(:,(0),(0)))
$grey(1,0) = f($w,$im(:,(1),(0)))
.
.
.
$grey(x-2,y-1) = f($w,$im(:,(x-2),(y-1))))
$grey(x-1,y-1) = f($w,$im(:,(x-1),(y-1))))

เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบ PDL เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฝเบ™ Loop Perl เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡
เบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบเปเปˆเบชเป‰เบฒเบ‡ pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเบเปเบฒเบ™เบปเบ”
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เปเบกเปˆเบ™เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ pixels เบฅเบงเบ‡เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™.

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ pdls เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ”เปเบกเปˆเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบก, เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เบเปเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ.
เบžเบงเบเป€เบฎเบปเบฒเบ—เปเบฒเบญเบดเบ”เบˆเบฐเปƒเบซเป‰เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบปเปˆเบงเป„เบ›เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบเบฐเบ—เบนเป‰เบ‚เบถเป‰เบ™เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡
input pdls เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบญเบญเบเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
(เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ pdls เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบเบ‚เบญเบ‡ PP-function เปƒเบ™เบ„เปเบฒเบ–เบฒเบก). เป„เบ”เป‰
เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบปเปˆเบงเป„เบ›เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบชเบฒเบเบ•เบฒเบ—เปเบฒเบญเบดเบ”เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเปเบฒเบ™เบปเบ”เบญเบญเบ
เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก (เป€เบŠเบดเปˆเบ‡เบซเบงเบฑเบ‡เบงเปˆเบฒเบˆเบฐ
เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบกเบตเบซเบผเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡เบ—เบตเปˆ threading เป€เบ‚เบปเป‰เบฒเบกเบฒ
เบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ).

A เป‚เบ— เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ เบฅเบฐเบซเบฑเบ” เบฅเบฐเบšเบฝเบšเบงเบดเป„เบ™
เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡ threading, เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เป‚เบ—เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš
เบฅเบฐเบšเบฝเบšเบงเบดเป„เบ™เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปƒเบ™เป€เบงเบฅเบฒเปƒเบŠเป‰ threading:

เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เบญเบ‡เบกเบฐเบ™เบธเบ”, เบเบฐเบฅเบธเบ™เบฒ เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เปƒเบ”เป†เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ nontrivial เปƒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš threading. เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบชเปเบฒเบฅเบฑเบš subroutine เปƒเบ”, เบ›เบฐเบเบญเบšเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ‚เปˆเบฒเบงเบชเบฒเบ™เบ—เบตเปˆ
เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ (เบซเบผเบทเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”).

เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™, เป€เบšเบดเปˆเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเป€เบ”เบปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™:

เบเบฒเบ™เบŠเบญเบเบซเบฒเบเปˆเบญเบ {
my ($im,$palette) = @_;
$res เบ‚เบญเบ‡เบ‚เป‰เบญเบ;
index($palette->xchg(0,1),
$im->long->dummy(0,($palette->dim)[0]),
($res=null));
เบเบฑเบšเบ„เบทเบ™ $res;
}

เบ—เปˆเบฒเบ™เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบงเปˆเบฒเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เบญเบญเบเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰, เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡
เบ›เบปเบเบเบฐเบ•เบด, เปเบฅเบฐเบญเบทเปˆเบ™เป†? (เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”, เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰)

เบงเบดเบ—เบตเบเบฒเบ™ to เบฎเบนเบš เบญเบญเบ เป„เบ”เป‰ loop เบ‚เบฐเบซเบ™เบฒเบ”
เบกเบตโ€‹เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบชเบญเบ‡โ€‹เบชเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบ„เบดเบ”โ€‹เบญเบญเบโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เปเบฅเบฐโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ‚เบญเบ‡ loop เป„เบ”เป‰โ€‹
เบ‚เบฐเบซเบ™เบฒเบ” (เปเบฅเบฐเบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ input pdls เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš threading).
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ pdl เปƒเบ”เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบชเบญเบ‡เบเบธเปˆเบกเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: Core
เบ‚เบฐเบซเบ™เบฒเบ” (เบ•เบฒเบกเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ PP-function, เป€เบšเบดเปˆเบ‡ เป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™ B เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ PDL primitives)
เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ”เบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ pdl เบ™เบฑเป‰เบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡
เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™ "func" เบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™ "func((n,m),[o](n))" เบ”เป‰เบงเบ pdl.
"a(2,4,7,1,3)" เป€เบ›เบฑเบ™ "f($a,($o = null))" เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบเบฒเบ™เปเบšเปˆเบ‡เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡ a semantic.
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™: เบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบ "(2,4)" เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ” "(7,1,3)".

เบ‚เบฐเปœเบฒเบ”เบซเบผเบฑเบ R0 เบ–เบทเบเบฅเบฐเบšเบธเบ”เป‰เบงเบเบ‚เบฐเปœเบฒเบ” N เบ—เบณเบญเบดเบ”เบ‚เบญเบ‡ pdl เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ (เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™). เบ‚เบฐเบซเบ™เบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ”เป†เปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ”เปเบฅเบฐเปƒเบŠเป‰เป€เบžเบทเปˆเบญ
เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ loop เป„เบ”เป‰.

R1 เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ ( implicit ) เบ‚เบฐเบซเบ™เบฒเบ” loop เป€เบ—เบปเปˆเบฒเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบžเบดเป€เบชเบ”
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡ pdlโ€‹.

R2 เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ loop เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ pdl. เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบงเบปเบ‡เปเบซเบงเบ™เปเบกเปˆเบ™เปƒเบซเป‰เป‚เบ”เบ
เบ‚เบฐเบซเบ™เบฒเบ”เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ pdls เปƒเบ”เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ”เบ™เบตเป‰.

R3 เบชเปเบฒเบฅเบฑเบš pdls เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ”เปƒเบซเป‰, เบ‚เบฐเบซเบ™เบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ loop (เบ•เบฒเบกเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ) เบซเบผเบท 1; เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบปเบ a
เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ runtime. เบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ”เปƒเบ™ pdl เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡
เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบ implicitly เป€เบ›เบฑเบ™ dummy เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบเบฑเบšเบงเปˆเบฒ loop dim เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ loop thread.

R4 เบ–เป‰เบฒ pdl เบšเปเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ loop, เปƒเบ™ thread loop pdl เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบทเบเบฑเบšเบงเปˆเบฒ
เบกเบตเบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบงเบปเบ‡ loop เบ™เบฑเป‰เบ™.

R5 เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ (เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡ pdl เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เป€เบ›เบฑเบ™ "PDL-โ€‹> nullโ€‹" เบเปˆเบญเบ™โ€‹.
invocation) เบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡
เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹เบซเบผเบฑเบ + เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ” loopโ€‹. เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เปเบเบ™
เบ‚เบฐเบซเบ™เบฒเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ‚เบญเบ‡ input pdls (เบ•เบฒเบกเบ—เบตเปˆเบฅเบฐเบšเบธ
เปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบŸเบฑเบ‡เบŠเบฑเบ™) เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ” loop เบกเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบกเบฒโ€‹เบˆเบฒเบโ€‹. pdl เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบˆเบฐเป€เบ›เบฑเบ™
เบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบš (เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ dataflow เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™).

เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ™เบตเป‰, เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบฅเปˆเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบเบฑเบš pdls เบ—เบตเปˆเบกเบต
เบ‚เบฐเบซเบ™เบฒเบ” dummy เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡ (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡). เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบšเปเปˆเบกเบต
เบ—เบธเบเป†เบ‚เบฐเบซเบ™เบฒเบ” dummy เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบ dummy เบชเป‰เบฒเบ‡ implicitly
เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบก R4.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต PP-function (เบ—เบตเปˆเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ) เบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™:

func((m,n),(m,n,o),(m),[o](m,o))

เปเบฅเบฐเบ—เปˆเบฒเบ™เป€เบญเบตเป‰เบ™เบกเบฑเบ™เบ”เป‰เบงเบ 3 pdls "a(5,3,10,11)", "b(5,3,2,10,1,12)", เปเบฅเบฐ "c(5,1,11,12)" เป€เบ›เบฑเบ™

func($a,$b,$c,($d=null))

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบงเบปเบ‡เปเบกเปˆเบ™ 3 (เป‚เบ”เบ "R0 + R1" เบˆเบฒเบ $b เปเบฅเบฐ $c) เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”.
"(10,11,12)" (เป‚เบ”เบ R2); เบชเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบเบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™ "(5,2)" (เบˆเบฒเบเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡
func) เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบœเบปเบ™เบœเบฐเบฅเบดเบ” 5 เบกเบดเบ•เบด pdl $c เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” "(5,2,10,11,12)" (เป€เบšเบดเปˆเบ‡ R5) เปเบฅเบฐ
(เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”) $d เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบ "($a,$b,$c)" เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบญเบญเบเป„เบ”เป‰.
เปƒเบ™ pdl pseudo-code as

$d(:,:,i,j,k).= func($a(:,:,i,j),$b(:,:,:,i,0,k),$c(:, 0,j,k))
เบเบฑเบš 0<=i<10, 0<=j<=11, 0<=k<12

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เบชเบตเป€เบ›เบฑเบ™เบชเบตเป€เบ—เบปเบฒเบญเบตเบเบ„เบฑเป‰เบ‡เบ”เป‰เบงเบเบเบปเบ”เบฅเบฐเบšเบฝเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เปƒเบˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™
เบญเบตเบเบ›เบฐเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰ implicit. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป‚เบ—เบซเบฒเบเบฒเบ™เปเบ›เบ‡เบ”เป‰เบงเบ pdl
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ pixels (im(3)), เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡ rgb pixels ("im(3,x)"), เบฎเบนเบšเบžเบฒเบšเบชเบตเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก
("im(3,x,y)") เบซเบผเบทเบฎเบนเบš RGB เบ—เบฑเบ‡เปเบปเบ” ("im(3,x,y,z)"). เบ•เบฒเบšเปƒเบ”เบ—เบตเปˆ $im เปเบกเปˆเบ™เบ‚เบญเบ‡
เบฎเบนเบšเปเบšเบš "(3, ...)" pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบˆเบฐเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปเบฅเบฐโ€‹เบšเบฑเบ™โ€‹เบˆเบธโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ„เบงเบฒเบกโ€‹เป€เบ‚เบฑเป‰เบกโ€‹เปเบ‚เบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ„เบฒเบ”โ€‹เบซเบงเบฑเบ‡โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบ™เบฑเบšโ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบ•เปˆ loops เป„เบ”เป‰โ€‹
เบ›เบฐเบ•เบดเบšเบฑเบ” implicitly เบ‚เบญเบšเปƒเบˆ implicit เบเบฐเบ—เบนเป‰. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป‚เบ™เป‰เบกเบ™เป‰เบฒเบงเบ•เบปเบงเป€เบญเบ‡เป„เบ”เป‰เบ‡เปˆเบฒเบเป†เบงเปˆเบฒ
เบเบฒเบ™เป‚เบ—เบ”เป‰เบงเบเบชเบต pixel $grey เปเบกเปˆเบ™ 0D, เบกเบตเบชเบฒเบเบกเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™ 1D grey(x), เบกเบตเบฎเบนเบš
เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš "grey(x,y)" เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš stack เบฎเบนเบšเบžเบฒเบš "grey(x,y,z)".

เบ‚เปเปƒเบซเป‰เบ•เบทเปˆเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบปเปˆเบงเป„เบ›เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบซเป‰เบเบฑเบšเบŠเบตเบงเบดเบ”เบ•เบทเปˆเบกเบญเบตเบเป‚เบ”เบเบเบฒเบ™เบœเปˆเบฒเบ™เบชเบญเบ‡เบชเบฒเบกเบญเบฑเบ™เบ•เปเปˆเป„เบ›
เบ•เบปเบงเบขเปˆเบฒเบ‡. เบœเบนเป‰โ€‹เบญเปˆเบฒเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ„เบดเบ”โ€‹เบญเบญเบโ€‹เปเบšเบšโ€‹เบ—เบตเปˆโ€‹เบ—เบฝเบšโ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปเบˆเป‰เบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™
looping เปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ‚เบญเบ‡เบ›เบปเบเบเบฐเบ•เบดเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ threading implicit เบเบฑเบš the
เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบฐเบซเบ™เบฒเบ” thread เบซเบผเบฒเบเบกเบฑเบ™เป€เบ›เบฑเบ™ a
เบญเบญเบโ€‹เบเปเบฒโ€‹เบฅเบฑเบ‡โ€‹เบเบฒเบโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ„เบงเบฒเบกโ€‹เป„เบงโ€‹เบ‚เบญเบ‡โ€‹เบžเบตเปˆโ€‹เบ™เป‰เบญเบ‡โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบš benchmark เบšเบฒเบ‡ (เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบ‡โ€‹
เบ•เป‰เบญเบ‡โ€‹เป€เบฎเบฑเบ”).

เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”เปƒเบ™เปเบ–เบงเปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ centroid เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเบกเปˆเป€เบฅเบฑเบเบ™เป‰เบญเบ, เบ•เบญเบ™เบ™เบตเป‰เบ–เบทเบเบฅเบฐเบซเบฑเบ”เบ”เป‰เบงเบ threading
เบˆเบดเบ”เปƒเบˆ.

# threaded mult เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆ centroid coords, เป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ stacks เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™
$xc = sumover(($im*xvals(($im->dims)[0]))->เบเบธเปˆเบก(2)) /
sumover($im->เบเบธเปˆเบก(2));

เบ‚เปเปƒเบซเป‰เบงเบดเป€เบ„เบฒเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบง. เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™:

$prod = $im*xvals(zeroes(($im->dims)[0]))

เบ™เบตเป‰เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ $im เป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡, เบชเบญเบ‡, เบชเบฒเบก, เปเบฅเบฐเบกเบดเบ•เบดเบชเบนเบ‡เบเบงเปˆเบฒ. เบ–เป‰เบฒ $im เปเบกเปˆเบ™
one-dimensional เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เปเบฒเบกเบฐเบ”เบฒ (เปƒเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบงเปˆเบฒเบ—เบธเบเป†เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ $im เปเบกเปˆเบ™
เบ„เบนเบ™เบ”เป‰เบงเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡ "xvals(...)"), เบ–เป‰เบฒ $im เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฒเบ
เบเบฐเบ—เบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ” dummy เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบš "xvals(...)"
เบญเบตเบ‡เบ•เบฒเบก R4. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ suover เบชเบญเบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™
เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ manipulating เบ‚เบฐเบซเบ™เบฒเบ”. เป€เบšเบดเปˆเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡ sumover เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ
เบˆเบฐเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบงเปˆเบฒเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆ "gobble" เบ‚เบฐเบซเบ™เบฒเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ pdl เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเป‰.
เปเบ•เปˆเบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบœเบปเบ™เบฅเบงเบกเบซเบผเบฒเบเบเบงเปˆเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบชเบญเบ‡เบ—เปเบฒเบญเบดเบ”
เบ‚เบฐเบซเบ™เบฒเบ”? เบ”เบต, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ” pdl virtual เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ sumover เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ™เบตเป‰
เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เปเบกเปˆเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹เป‚เบ”เบ clumping เบชเบญเบ‡โ€‹เบกเบดโ€‹เบ•เบดโ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เบ‚เบญเบ‡ "parent pdlโ€‹" เป€เบ›เบฑเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เบˆเบฒเบ
เบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡ pdl เบžเปเปˆเปเบกเปˆ, เบœเบปเบ™เบฅเบงเบกเป„เบ”เป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบ™เป„เบฅเบเบฐเบชเบญเบ‡เบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”,
เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ sumover เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™. เป„เบ”เป‰
เบกเบฑเบ™ ?

เบญเบตเบเบญเบฑเบ™เปœเบถเปˆเบ‡เบญเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปเบšเบšเบ™เบฑเป‰เบ™: เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เปƒเบˆเปƒเบŠเป‰
"sumover($pdl->เบเบธเปˆเบก(2))" เปเบ—เบ™ "sum($pdl)" เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบœเปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบฎเบนเบšเบžเบฒเบš
"(x,y)" เบซเบผเบท stack เบ‚เบญเบ‡เบฎเบนเบš "(x,y,t)" เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ›เบปเบเบเบฐเบ•เบดเบ™เบตเป‰เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡.
x-coordiante เบซเบผเบท vector เบ‚เบญเบ‡ x-coordinates (เบ‚เบฐเบซเบ™เบฒเบ” t) เปƒเบ™เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™.

เบŠเบธเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบปเบ™เป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™". เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ ND pdl เป€เบ›เบฑเบ™ input เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™ a (N-1)-D "projected" pdl. เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบกเบฑเบเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบŠเบฑเปˆเบ™: sumover, prodover, เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเปเบฅเบฐเบชเบนเบ‡เบชเบธเบ”. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰
เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบฎเบนเบšเบžเบฒเบšเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ„เปˆเบฒ pixels เบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™
เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบซเบผเบท stack เบฎเบนเบšเบžเบฒเบš. เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเบดเบ—เบตเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™

# เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™ (เป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เป€เบชเบฑเป‰เบ™เปเบฅเบฐเป€เบงเบฅเบฒ)
เบชเบนเบ‡เบชเบธเบ”($stack,($ret=null));

เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เป„เบฅเปˆเบชเบนเบ‡เบชเบธเบ”เบ•เปเปˆเบ–เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฐเบ—เบนเป‰ implicit เบชเบฐเป€เบซเบกเบตเบ™เปเบฒเปƒเบŠเป‰
เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบซเบผเบฑเบเบ‚เบญเบ‡เบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบเบฐเบ—เบนเป‰เปƒเบ™เป„เบฅเบเบฐเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”? เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”
เบšเบฑเบ™โ€‹เบฅเบธโ€‹เป„เบ”เป‰โ€‹เบงเปˆเบฒโ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบซเบผเบฑเบโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฑเบšโ€‹เบกเบดโ€‹เบ•เบดโ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹เปเบฅเบฐโ€‹
threading เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เป„เบฅเบเบฐเบญเบทเปˆเบ™เป†. เป€เบˆเบปเป‰เบฒเป€เบ”เบปเบฒเป„เบ”เป‰เบšเป? เปเบกเปˆเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ pdl virtual เบ—เบตเปˆเบกเบต
เบกเบดเบ•เบดเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡ "parent pdl" เป€เบ›เบฑเบ™เบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "mv".

# เบ–เบฑเบ™เบชเบนเบ‡เบชเบธเบ” (เป€เบ›เบฑเบ™เปœเป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบˆเบณเบ™เบงเบ™เบ–เบฑเบ™ เปเบฅเบฐเป€เบงเบฅเบฒ)
เบชเบนเบ‡เบชเบธเบ”($stack->mv(1,0),($ret=null));

เปเบฅเบฐเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบœเบปเบ™เบฅเบงเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ•เปˆเบญเบ™เบเปˆเบญเบเปƒเบ™เป„เบฅเบเบฐเบชเบฒเบกเบกเบดเบ•เบดเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™เป€เบเบทเบญเบšเบ‡เปˆเบฒเบเป€เบเบตเบ™เป„เบ›

# เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ pixels เปƒเบ™เป€เบงเบฅเบฒ (เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบงเบฅเบฒเปเบกเปˆเบ™เบ„เบงเบฒเบกเบกเบทเบ”เบ—เบตเบชเบฒเบก)
sumover($stack->mv(2,0),($ret=null));

เบชเบธเบ”เบ—เป‰เบฒเบ, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ” (เป€เบŠเบฑเปˆเบ™: เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบซเบผเบท
เบœเบปเบ™เบšเบงเบเบซเบผเบฒเบเบเบงเปˆเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”) เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เปƒเบ™เบ„เปเบฒเบ–เบฒเบก "clump" เบกเบฒ
เปƒเบ™ handy. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡ "sum" (เบ•เบฒเบกเบเปเบฒเบ™เบปเบ”เปƒเบ™ "Ufunc.pm"):

เบœเบปเบ™เบฅเบงเบกเบเปˆเบญเบ {
PDL::Ufunc::sumover($name->clump(-1),($tmp=null));
เบเบฑเบšเบ„เบทเบ™ $tmp->at(); # เบชเบปเปˆเบ‡เบ„เบทเบ™เบ•เบปเบงเป€เบฅเบ Perl, เบšเปเปˆเปเบกเปˆเบ™ 0D pdl
}

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบงเบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ threading เปเบฅเบฐเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเปเบกเปˆเบ™เบšเปเปˆเบกเบต
เบ‚เปเป‰โ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบชเบญเบ‡เบชเบฒเบกเบเบฐเบ—เบนเป‰

pdl> $im = zeroes(byte, 10,20)
pdl> $line = exp(-rvals(10)**2/9)
# เบเบฒเบ™เบกเบญเบšเปเบฒเบเปเบšเบšเบเบฐเบ—เบนเป‰
pdl> $im .= $line # เบ•เบฑเป‰เบ‡เบ—เบธเบเป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡ $im เป€เบ›เบฑเบ™ $line
pdl> $im2 .= 5 # เบ•เบฑเป‰เบ‡เบ—เบธเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ $im2 เป€เบ›เบฑเบ™ 5

เบ•เบญเบ™เบ™เบตเป‰เป€เบˆเบปเป‰เบฒเบ„เบปเบ‡เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ” เปเบฅเบฐเบกเบฑเบ™เป€เบฎเบฑเบ”เบซเบเบฑเบ‡, เบšเปเปˆเปเบกเปˆเบ™เบšเป?

เป€เบžเบทเปˆเบญเบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เบงเบฑเบเบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš RGB เบˆเบฒเบ
เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบฎเบนเบš palette. เบฎเบนเบšเบžเบฒเบš palette เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™: เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡
เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เป€เบ‚เบปเป‰เบฒเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบŠเบญเบเบซเบฒเบชเบตเปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบŠเบญเบเบซเบฒเบชเบตเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. [เบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™
เป€เบฎเบฑเบ”เบงเบฝเบ] เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ PP-function เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰ encoutered เป€เบ—เบทเปˆเบญเปƒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ
เบ•เบปเบงเบขเปˆเบฒเบ‡. เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ”เบฑเบ”โ€‹เบŠเบฐโ€‹เบ™เบตโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบŠเบทเปˆโ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹, เบฅเบฒเบโ€‹เป€เบŠเบฑเบ™ "((nโ€‹)โ€‹, (), [oโ€‹]())" (เป€เบšเบดเปˆเบ‡ เป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™
B) เบ”เป‰เบงเบเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบซเบผเบฑเบเบ—เบตเปˆ "index(pdl (0,2,4,5),2,($ret=null))" เบˆเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒ.
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบต 2 เบ‚เบญเบ‡ input pdl เบ—เปเบฒเบญเบดเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, $ret เบˆเบฐเบกเบตเบ„เปˆเบฒ 4.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡:

# เบเบฒเบ™เบŠเบญเบเบซเบฒเบ”เบฑเบ”เบŠเบฐเบ™เบตเปเบšเบšเบเบฐเบ—เบนเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฎเบนเบš RGB, เบซเบผเบท RGBA เบซเบผเบท YMCK
# เบˆเบฒเบเบฎเบนเบš palette (เบชเบฐเปเบ”เบ‡เป‚เบ”เบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบŠเบญเบเบซเบฒ $palette เปเบฅเบฐ
# เบฎเบนเบšเบžเบฒเบšเบ”เบฑเบ”เบชเบฐเบ™เบตเบชเบต $im)
# เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆ dummy(0) เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡ threading เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบซเบกเบฒเบฐ
pdl> index($palette->xchg(0,1),
$im->long->dummy(0,($palette->dim)[0]),
($res=null));

เปƒเบซเป‰เบœเปˆเบฒเบ™เบกเบฑเบ™เปเบฅเบฐเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš RGB
lookup-table $palette เบกเบตเบ‚เบฐเปœเบฒเบ” "(3,x)". เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบเบ›เปˆเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ palette เป„เบ”เป‰
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™ looping เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เบซเบผเบฒเบเบเบงเปˆเบฒเบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ $palette (เบ‚เบฐเบซเบ™เบฒเบ” 3 เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ r,
g, เปเบฅเบฐ b เบญเบปเบ‡เบ›เบฐเบเบญเบš). เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบšเบดเปˆเบ‡ $im, เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบเบฑเบš
เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบชเบปเบ™เบ—เบฐเบ™เบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบกเบตเบžเบฝเบ‡เปเบ•เปˆ
เปƒเบŠเป‰เป€เบฅเบ 3 เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบกเบต 3 เบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบต). เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ‚เบฐเบซเบ™เบฒเบ” dummy เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ
เบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบตเบชเบตเปเบ”เบ‡, เบชเบตเบ‚เบฝเบงเปเบฅเบฐเบชเบตเบŸเป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ”เบฝเบงเบเบฑเบ™เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš,
เบ•เบปเบงเบขเปˆเบฒเบ‡: เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ pixel เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ $im เบกเบตเบกเบนเบ™เบ„เปˆเบฒ 4 เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบ„เบงเบ™เบˆเบฐเบœเบฐเบฅเบดเบ”
triple

[palette(0,4),palette(1,4),palette(2,4)]

เบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบตเปเบ”เบ‡, เบชเบตเบ‚เบฝเบงเปเบฅเบฐเบชเบตเบŸเป‰เบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบซเบงเบฑเบ‡เป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบเบดเปˆเบ‡เบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบกเบต
เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบ„เบดเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบฎเบฑเบ” (เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™
เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” threading; เบžเบฝเบ‡เปเบ•เปˆเบชเบทเบšเบ•เปเปˆเป€เบ”เบตเบ™เบซเบ™เป‰เบฒ
เปเบฅเบฐเบ—เบปเบ”เบฅเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™).

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบญเปˆเบฒเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฐเบ—เบนเป‰เบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰
เบ•เป‰เบญเบ‡เบšเบญเบเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ dummy เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบš $im; เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ
เบชเป‰เบฒเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบ‚เบฐเบซเบ™เบฒเบ” 1 (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡ threading เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบซเบกเบฒเบฐเบเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ (เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš R3, เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ 3 เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ palette เบ‚เบญเบ‡
เบ‚เบฐเบซเบ™เบฒเบ” "(3,x)"). เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบฅเบทเป‰เบญเบเป†เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เปเบ—เป‰เป†
เบเบปเบ”เบฅเบฐเบšเบฝเบš R3 เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต (เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” 1 เป€เบซเบกเบฒเบฐเบเบฑเบšเบเบฐเบ—เบนเป‰
loop เบ‚เบฐโ€‹เบซเบ™เบฒเบ” dim). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒ

pdl> index($palette->xchg(0,1),$im->long->dummy(0),($res=null));

เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เบงเปˆเบฒเบ›เบปเบเบเบฐเบ•เบดเบ™เบตเป‰เบˆเบฐเบชเป‰เบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ–เป‰เบฒเบ–เบทเบเป€เบญเบตเป‰เบ™
เบ”เป‰เบงเบ pixels ($im เปเบกเปˆเบ™ 0D), เป€เบชเบฑเป‰เบ™ ($im เปเบกเปˆเบ™ 1D), เบฎเบนเบšเบžเบฒเบš ($im เปเบกเปˆเบ™ 2D), ..., เบเบฒเบ™เบŠเบญเบเบซเบฒ RGB
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ (palette เปเบกเปˆเบ™ "(3,x)") เปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบŠเบญเบเบซเบฒ RGBA (palette เปเบกเปˆเบ™ "(4,x)", เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡ OpenGL).
เบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡ threading เบ—เบตเปˆเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡
เบชเบดเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ.

เป€เบžเบทเปˆเบญเบซเปเปˆเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบฅเบธ
looping เปƒเบ™เป„เบฅเบเบฐเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบกเบต core functionality เบ™เบณเปƒเบŠเป‰เบเบฑเบšเบญเบฑเบ™เบญเบทเปˆเบ™
เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ manipulating เบกเบดเบ•เบดเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ (เบซเบผเบท
เบซเบผเบฒเบ) virtual pdl(s) เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบฒเบเบˆเบธเบ”เบ‚เบญเบ‡เบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡ เบžเปเปˆเปเบกเปˆ pdl(s) เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ
เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ (เบชเบฐเป€เบซเบกเบตเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ„เปเบฒเบ–เบฒเบกเปเบฅเบฐ R1-R5 เบขเบนเปˆเปƒเบ™เปƒเบˆ!).
เบ‡เปˆเบฒเบ, เบšเปเปˆเปเบกเปˆเบ™เบšเป?

เบœเบปเบ™เบœเบฐเบฅเบดเบ” เบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เปเบฅเบฐ เบŸเบฑเบ‡เบŠเบฑเบ™ PP เป‚เบ—เบซเบฒ เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒ
เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบซเบฑเบ™เป„เบ›เบซเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ—เบปเปˆเบงเป„เบ›
เบเบฒเบ™เป€เบญเบตเป‰เบ™เบชเบปเบ™เบ—เบดเบชเบฑเบ™เบเบฒเบ‚เบญเบ‡ PP-functions เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”.
เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเบ‚เบญเบ‡เบเบฒเบ™เป€เบญเบตเป‰เบ™ pdl routines, เบ„เบท

$result = func($a,$b);

เปเบฅเบฐ

func($a,$b,$result);

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰ threading implicit เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบปเบงเปเบ›เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบฒเบกเบฒเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เบชเป‰เบฒเบ‡เป‚เบ”เบ PDL. เบ—เปˆเบฒเบ™เบ•เบฑเป‰เบ‡เบ—เบธเบ‡เบ™เบฑเป‰เบ™เปƒเบชเปˆ PP-function เป‚เบ”เบเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เป€เบ›เบฑเบ™ a
pdl เบ›เบฐเป€เบžเบ”เบžเบดเป€เบชเบ”เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เบˆเบฒเบเบเบฒเบ™เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™ "PDL->null" เบ—เบตเปˆเบเบฑเบšเบ„เบทเบ™เบกเบฒ
pdl เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™ "เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ" (เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบชเบปเบ™เปƒเบˆเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบกเบตเบ—เบธเบ‡เบขเบนเปˆเปƒเบ™ C pdl
เป‚เบ„เบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบ™เบตเป‰). เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡
เบเบฐเบ—เบนเป‰ implicit: เบ‚เบฐเบซเบ™เบฒเบ”เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฑเบเบ—เบตเปˆ
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ•เปเปˆโ€‹เบ—เป‰เบฒเบ (เบŠเบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เบ™เบฑเป‰เบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป‚เบ”เบโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹
input pdls เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰

func($a,$b,($result=PDL->null));

or

$result = func($a,$b)

เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™ เบขเปˆเบฒเบ‡โ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™ เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ.

เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ•เบทเบญเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ เบšเปเปˆ เปƒเบŠเป‰เบเบฒเบ™เบชเป‰เบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ threading explicit (เบชเปเบฒเบฅเบฑเบš
เป€เบซเบ”เบœเบปเบ™เบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบš เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ เบเบฐเบ—เบนเป‰, variant เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡
threading).

เปƒเบ™ loops "เปเบซเบ™เป‰เบ™" เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ implicit เบ‚เบญเบ‡ pdl เบŠเบปเปˆเบงเบ„เบฒเบงเปƒเบ™
เปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡ loop เบ—เบตเปˆเบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบฎเบนเบšเปเบšเบš "เบซเบ™เป‰เบฒเบ—เบตเปˆ" เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒ

# เบชเป‰เบฒเบ‡ pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”
$result = null;
เบชเปเบฒเบฅเบฑเบš (0...$n) {
func($a,$b,$result); # เบ—เบฑเบ‡เปเบปเบ”เปเบ•เปˆเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เบ—เบณเบญเบดเบ” $result
func2($b); # เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปเบฅเบฐเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบš
# เป€เบญเบปเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰ $b's dims เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡
twiddle($result,$a); # เป€เบฎเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฒเบ $result เบซเบฒ $a เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบŠเป‰เบณ
}

เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบญเบปเบฒเบขเบนเปˆเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡เบžเบฒเบเบ™เบตเป‰เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡: เบˆเบปเปˆเบ‡เบฎเบนเป‰เป€เบ–เบดเบ‡เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”
เบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ เบเบฐเบ—เบนเป‰.

เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ เบเบฐเบ—เบนเป‰
เบกเบฒเป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบงเบปเป‰เบฒเป€เบ–เบดเบ‡เบฅเบปเบ”เบŠเบฒเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰, เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเปเบฅเป‰เบง
เปเบ™เบฐเบ™เปเบฒเบ•เบปเบงเปเบ›เบ—เบตเบชเบญเบ‡. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ shuffling เบ›เบฐเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒเปเบฅเบฐ
เบญเบตเบ‡เปƒเบชเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰ implicit เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบšเบฒเบ‡เป€เบ—เบทเปˆเบญเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™
เบฅเบฐเบšเบธเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เบเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ loop thread. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ„เบทเบเบฑเบ™
เปเบ›เบเปƒเบˆเบ—เบตเปˆ variant เบ‚เบญเบ‡เป€เบเบกเบ™เบตเป‰เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ เบเบฐเบ—เบนเป‰. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒ
เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบ›เบฐเบ—เบฑเบšเปƒเบˆเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡: เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™ implicit or เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™; เบชเบญเบ‡เบฅเบปเบ”เบŠเบฒเบ”เป€เบฎเบฑเบ”
เบ›เบฐเบชเบปเบก. เปเบ•เปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบ•เปเปˆเบกเบฒ.

เบชเบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบกเบต threading เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปเบกเปˆเบ™ thread เปเบฅเบฐ unthread. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบ”เป‰เบงเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบญเบฐเบ”เบตเบ”:

[ # ** เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ]
# เปเบ•เปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ $mat += $line เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ
# $mat->เบเบฐโ€‹เบ—เบนเป‰(0) += $line
# threading explicit เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบก vector เปƒเบชเปˆเปเบ•เปˆเบฅเบฐเบ–เบฑเบ™เบ‚เบญเบ‡ matrix
pdl> $mat = เบชเบนเบ™(4,3)
pdl> $line = pdl (3.1416,2,-2)
pdl> ($tmp = $mat->เบเบฐโ€‹เบ—เบนเป‰(0)) += $line

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, "$mat->เบเบฐโ€‹เบ—เบนเป‰(0)" เบšเบญเบ PDL เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบดเบ•เบดเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ™เบตเป‰
pdl เบ—เบตเปˆเบˆเบฐ threaded เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆ loop thread เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™

เบชเปเบฒเบฅเบฑเบš (j=0; j<3; j++) {
เบชเปเบฒเบฅเบฑเบš (i=0; i<4; i++) {
mat(i,j) += src(j);
}
}

"เบเบฐเบ—เบนเป‰" เป€เบญเบปเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเป€เบ›เบฑเบ™ arguments เบ—เบตเปˆเบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ”
เบเบฐเบ—เบนเป‰เบเปˆเบญเบ™. เบ”เป‰เบงเบเบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เปเบกเปˆเบ™
เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบชเบฒเบกเบเบธเปˆเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบชเบญเบ‡เบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบขเบนเปˆเปเบฅเป‰เบง
เบžเบปเบš: เบ‚เบฐเปœเบฒเบ”เบเบฐเบ—เบนเป‰, เบ‚เบฐเปœเบฒเบ”เบซเบผเบฑเบ เปเบฅเบฐ เบ‚เบฐเปœเบฒเบ”เบžเบดเป€เบชเบ”.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”, เบกเบฑเบ™เบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เป€เบ–เบดเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ pdl เบ—เบตเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™
เบเบฒเบ™เป‚เบ—เบซเบฒ "เบเบฐเบ—เบนเป‰" เบ—เบตเปˆเบ–เบทเบเป€เบญเบปเบฒเป„เบ›เบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเปƒเบชเปˆ a
stack เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต pdl "a(4,7,2,8)" เป€เบงเบปเป‰เบฒ

$b = $a->เบเบฐเบ—เบนเป‰(2,1)

เบชเป‰เบฒเบ‡ pdl virtual เปƒเบซเบกเปˆเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” "b(4,8)" (เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒ dims เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ) เบ—เบตเปˆ.
เบเบฑเบ‡เบกเบตเบ‚เบฐเบซเบ™เบฒเบ” 2 thread เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” "(2,7)". เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™
เบ—เบตเปˆเป€เบ›เบฑเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบเป€เบ›เบฑเบ™ "b(4,8){2,7}". เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบšเปˆเบญเบ™เบ—เบตเปˆ
เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰ threading implicit เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบเบ–เบทเบเบˆเบฑเบšเบ„เบนเปˆเบเบฑเบš
เป„เบ”เป‰ เบเบฑเบ‡เป€เบซเบผเบทเบญ เบ‚เบฐเบซเบ™เบฒเบ” เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ pdl. เบžเบงเบเป€เบฎเบปเบฒ
เบ•เบญเบ™เบ™เบตเป‰เบˆเบฐเบฅเบฐเบšเบธเบงเปˆเบฒเบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบš R1-R5 เปเบ™เบงเปƒเบ”เบชเบณเบฅเบฑเบšเบเบฐเบ—เบนเป‰
loops (เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบžเบดเป€เบชเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ pdl เปƒเบ”เป†
เบ‚เบฐเบซเบ™เบฒเบ”).

เบ‚เบฐเบซเบ™เบฒเบ” T0 Core เบ–เบทเบเบˆเบฑเบšเบ„เบนเปˆเบเบฑเบš n เบ—เปเบฒเบญเบดเบ” เบเบฑเบ‡เป€เบซเบผเบทเบญ เบ‚เบฐเบซเบ™เบฒเบ” เบ‚เบญเบ‡ pdl
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ (เบชเบฑเบ‡เป€เบเบ”เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบš R1). เบ•เบทเปˆเบกเบญเบตเบ เบเบฑเบ‡เป€เบซเบผเบทเบญ เบ‚เบฐเบซเบ™เบฒเบ” เบกเบต เบžเบดเป€เบชเบ”
เบ‚เบฐเบซเบ™เบฒเบ” เปเบฅเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ” implicit loop เบ‚เบฐเบซเบ™เบฒเบ”.

T1a เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ implicit loop เบ‚เบฐเบซเบ™เบฒเบ” เป€เบ—เบปเปˆเบฒเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบžเบดเป€เบชเบ”
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡ pdlโ€‹.

T1b เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ loop เบ‚เบฐเบซเบ™เบฒเบ” เป€เบ—เบปเปˆเบฒเบเบฑเบšเบˆเบณเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ–เบฝเบ‡ pdlโ€‹.

T1c เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ loop เบ‚เบฐเบซเบ™เบฒเบ” เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ loop เบ‚เบฐเบซเบ™เบฒเบ”
เปเบฅเบฐ implicit loop เบ‚เบฐเบซเบ™เบฒเบ”. เปƒเบ™ loop thread, เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ loop เบ‚เบฐเบซเบ™เบฒเบ” เบกเบต
threaded เบ—เปเบฒเบญเบดเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป‚เบ”เบ implicit loop เบ‚เบฐเบซเบ™เบฒเบ”.

T2 เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ„เบปเบ™ loop เบ‚เบฐเบซเบ™เบฒเบ” เปเบกเปˆเบ™เป„เบ”เป‰เบกเบฒเบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš
เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ pdl. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เป‚เบ”เบเบ‚เบฐเบซเบ™เบฒเบ”เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบžเบปเบšเปƒเบ™ pdls เปƒเบ”
เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบเบฐเบ—เบนเป‰เบ™เบตเป‰ (เบชเปเบฒเบฅเบฑเบš เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ loop เบ‚เบฐเบซเบ™เบฒเบ”) เบซเบผเบทเบ‚เบฐเบซเบ™เบฒเบ”เบžเบดเป€เบชเบ” (เบชเปเบฒเบฅเบฑเบš
implicit loop เบ‚เบฐเบซเบ™เบฒเบ”).

T3 เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ™เบตเป‰เปƒเบŠเป‰เบเบฑเบšเบ—เบธเบ เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ loop dimension เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเปƒเบ”เป† implicit loop
dimension. เบชเปเบฒเบฅเบฑเบš pdls เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเปƒเบซเป‰ thread / เบžเบดเป€เบชเบ” dimension เบ‚เบฐเบซเบ™เบฒเบ”เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™
เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš เบŠเบฑเบ”เป€เบˆเบ™ / implicit loop dimension เบซเบผเบท 1; เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบ—เปˆเบฒเบ™เบเบปเบเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ runtime. เบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ เบ thread / เบžเบดเป€เบชเบ” dimension เบ‚เบญเบ‡ pdl เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡
เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบ implicitly เป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบเบฑเบš เบŠเบฑเบ”เป€เบˆเบ™ / implicit
loop dimension.

T4 เบ–เป‰เบฒ pdl เบšเปเปˆเบกเบต a thread / เบžเบดเป€เบชเบ” dimension เบ—เบตเปˆโ€‹เบชเบญเบ”โ€‹เบ„เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹
เบŠเบฑเบ”เป€เบˆเบ™ / implicit loop dimension, เปƒเบ™ loop thread pdl เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบต
เบ‚เบฐเบซเบ™เบฒเบ” dummy เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบงเบปเบ‡ loop เบ™เบฑเป‰เบ™.

T4a pdl เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบกเบต เบเบฐโ€‹เบ—เบนเป‰ เบ‚เบฐเบซเบ™เบฒเบ” เบ•เป‰เบญเบ‡เบกเบตเบˆเปเบฒเบ™เบงเบ™เบเบฐเบ—เบนเป‰เบ”เบฝเบงเบเบฑเบ™
เบ‚เบฐ เปœเบฒเบ”.

T5 Output auto-creation เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ pdl เปƒเบ”เป† เบเบฐโ€‹เบ—เบนเป‰
เบ‚เบฐเบซเบ™เบฒเบ”. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ R5 เบ™เบณเปƒเบŠเป‰.

เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ” dummy implicit (เบชเป‰เบฒเบ‡โ€‹เป‚เบ”เบ
เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบ T4โ€‹) เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบเปˆเบฒเบงโ€‹เบกเบฒโ€‹เปเบฅเป‰เบงโ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฐโ€‹เบ—เบนเป‰ implicitโ€‹: เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบตโ€‹
pdls เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบกเบต (เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™โ€‹เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เป‚เบ”เบ implicitly) เบ‚เบฐโ€‹เบซเบ™เบฒเบ” dummy เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบซเบ™เบถเปˆเบ‡
เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™ runtime เบˆเบฐเบ–เบทเบเบเบปเบเบ‚เบถเป‰เบ™เบกเบฒ.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเปเบ”เบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบปเปˆเบงเป„เบ›. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต (เบ—เบตเปˆเบ™เบตเป‰
unspecified) PP-function เบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™:

func((m,n),(m),(),[o](m))

เปเบฅเบฐเบ—เปˆเบฒเบ™เป€เบญเบตเป‰เบ™เบกเบฑเบ™เบ”เป‰เบงเบ 3 pdls "a(5,3,10,11)", "b(3,5,10,1,12)", "c(10)" เปเบฅเบฐ pdl เบœเบปเบ™เบœเบฐเบฅเบดเบ”
"d(3,11,5,10,12)" (เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบ™เบตเป‰ เบšเปเปˆ เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”) เป€เบ›เบฑเบ™

func($a->thread(1,3),$b->thread(0,3),$c,$d->thread(0,1))

เบˆเบฒเบเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡ func เปเบฅเบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป‚เบ—เบซเบฒ pdls เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบเบธเปˆเบกเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ‚เบญเบ‡
เบ‚เบฐเบซเบ™เบฒเบ”เบซเบผเบฑเบ, เบžเบดเป€เบชเบ” เปเบฅเบฐ thread (เบ‚เบฝเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš "pdl(core dims){thread dims}[extra
dims]"):

a(5,10){3,11}[] b(5){3,1}[10,12] c(){}[10] d(5){3,11}[10,12]

เบ”เป‰เบงเบเบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒ (เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบฅเบปเบ‡เปเบšเบšเบ™เบตเป‰
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบเบซเบผเบตเป‰เบ™เบเบฑเบš threading เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฒเบกเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™) เบžเบงเบเป€เบฎเบปเบฒ
เป€เบžเบตเปˆเบกเป€เบ•เบตเบก deduce เบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” loop explicit เปเบกเปˆเบ™ 2 (เป‚เบ”เบ T1b เบˆเบฒเบ $a เปเบฅเบฐ $b)
with sizes "(3,11)" (เป‚เบ”เบ T2); 2 เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡ loop implicit (เป‚เบ”เบ T1a เบˆเบฒเบ $b เปเบฅเบฐ $d) เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”
"(10,12)" (เป‚เบ”เบ T2) เปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป„เบ”เป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเบˆเบฒเบ input pdls เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”
เบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบ™ pdl pseudo-code as

เบชเปเบฒเบฅเบฑเบš (l=0;l<12;l++)
เบชเปเบฒเบฅเบฑเบš (k=0;k<10;k++)
เบชเปเบฒเบฅเบฑเบš (j=0;j<11;j++) เบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบกเบฑเบ™เป€เบ›เบฑเบ™ dummy dim (เบ”เบฑเบ”เบŠเบฐเบ™เบต j)
เบชเปเบฒเบฅเบฑเบš (i=0;i<3;i++) |
d(i,j,:,k,l) โ€‹โ€‹= func(a(:,i,:,j),b(i,:,k,0,l),c(k))

Ugh, เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบเปเปˆเบšเปเปˆเบ‡เปˆเบฒเบเปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบฎเบฑเบเบชเบฒเบšเบฑเบ™เบŠเบต. เบกเบฑเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบ›เบฑเบ™
เบ•เบปเบงเบขเปˆเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ„เบดเบ”เบญเบญเบเบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบžเบปเบšเบเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เปเบ•เปˆเบ”เบฝเบงเบ™เบตเป‰เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเปเบ—เป‰เป†เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰เบกเบตเบ›เบฐเป‚เบซเบเบ”เป‚เบ”เบเบเบฒเบ™เปƒเบซเป‰เบšเบฒเบ‡เบชเปˆเบงเบ™เบ•เบทเปˆเบกเบญเบตเบ
เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบ›เบฐเบ•เบดเบšเบฑเบ”" เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

[ เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบชเปเบฒโ€‹เบฅเบฑเบš
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฐเบฅเบธเบ™เบฒเบžเบฐเบเบฒเบเบฒเบกเบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เบเบฑเบšเบ„เปเบฒเป€เบซเบฑเบ™เปƒเบ™เบŠเบดเป‰เบ™เบฅเบฐเบซเบฑเบ”. ]

เบ•เบปเบงเบขเปˆเบฒเบ‡ 1:

*** เบ›เบตเป‰เบ™เบเบฑเบšเบ‚เบญเบ‡เบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡เบชเบฐเปเบ”เบ‡เป‚เบ”เบ eigvecs เปเบฅเบฐ eigvals
** เปƒเบซเป‰เป€เบกเบ—เบฃเบดเบเบชเบปเบกเบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡ M = A^T x diag(lambda_i) x A
** => เบ›เบตเป‰เบ™ M^-1 = A^T x diag(1/lambda_i) x A
** เบ—เบณเบญเบดเบ” $tmp = diag(1/lambda_i)*A
** เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ A^T * $tmp เป‚เบ”เบเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบžเบฒเบเปƒเบ™ threaded
# เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเป€เบžเบทเปˆเบญเปƒเบซเป‰ matrices เบžเบดเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบžเบฒเบเปƒเบ•เป‰ pdl
$inv .= $evecs*0; # เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเป€เบ™เบปเบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก
$tmp .= $evecs; # เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ„เบทเบ™
($tmp2 = $tmp->เบเบฐโ€‹เบ—เบนเป‰(0)) // $evals; # เบเบฒเบ™เปเบšเปˆเบ‡เบเบฐเบ—เบนเป‰
# เปเบฅเบฐเบ”เบฝเบงเบ™เบตเป‰เบเบฒเบ™เบ„เบนเบ™เบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡เปƒเบ™เบเบฒเบ™เบ›เบญเบกเบ•เบปเบง
PDL::Primitive::inner($evecs->xchg(0,1)->thread(-1,1),
$tmp->thread(0,-1),
$inv->thread(0,1));
# เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบš matrix mult เป‚เบ”เบเปƒเบŠเป‰ threading implicit,
# xchg เบ—เปเบฒเบญเบดเบ”เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”
PDL::Primitive::inner($evecs->xchg(0,1)->dummy(1)
$tmp->xchg(0,1)->dummy(2)
($inv=null));

เบ•เบปเบงเบขเปˆเบฒเบ‡ 2:

# เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ™เบญเบเป‚เบ”เบเบเบฒเบ™เบ„เบนเบ™ threaded
# เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ—เบซเบฒ my_biop1 เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡
# เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบเบฐเบ—เบนเป‰เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™
$res=zeroes(($a->dims)[0],($b->dims)[0]);
my_biop1($a->thread(0,-1),$b->thread(-1,0),$res->(0,1),"*");
# เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป‚เบ”เบเบเบฒเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰ implicit เบเบฑเบš pdl เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
$res = $a->dummy(1) * $b->dummy(0)

เบ•เบปเบงเบขเปˆเบฒเบ‡ 3:

# เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ thread เปเบฅเบฐ unthread เป€เบžเบทเปˆเบญ shuffle เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡
# เบกเบดเบ•เบดเปƒเบ™เบ„เบฑเป‰เบ‡เบ”เบฝเบงเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ—เบซเบผเบฒเบเป„เบ›เบซเบฒ ->xchg เปเบฅเบฐ ->mv

# เปƒเบŠเป‰ thread/unthread เป€เบžเบทเปˆเบญเบชเบฐเบซเบผเบฑเบšเบ‚เบฐเปœเบฒเบ”เบญเป‰เบญเบกเบฎเบญเบš
# เบžเบฝเบ‡เปเบ•เปˆเบฅเบญเบ‡เบกเบฑเบ™เบญเบญเบเปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบš pdl เบ‚เบญเบ‡เป€เบ”เบฑเบเบเบฑเบšเบžเปเปˆเปเบกเปˆ
$trans = $a->thread(4,1,0,3,2)->unthread;

เบ•เบปเบงเบขเปˆเบฒเบ‡ 4:

# เบ„เบดเบ”เป„เบฅเปˆเบชเบญเบ‡เบชเบฒเบกเบเปˆเบญเบ‡
# $bb เบˆเบฐเบ–เบท BB เป€เบ›เบฑเบ™ [xmin,xmax],[ymin,ymax],[zmin,zmax]
# เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ thread เปเบฅเบฐ unthread เบญเบตเบเป€เบ—เบทเปˆเบญ เปœเบถเปˆเบ‡ เป€เบžเบทเปˆเบญเบชเบฐเบซเบผเบฑเบšเบ‚เบฐ เปœเบฒเบ” เบญเป‰เบญเบกเบฎเบญเบš
pdl> $bb = zeroes(double, 2,3 );
pdl> เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ($vertices->เบเบฐโ€‹เบ—เบนเป‰(0)-> clump->unthread(1), $bb->slice('(0), :'));
pdl> เบชเบนเบ‡เบชเบธเบ” ($vertices->เบเบฐโ€‹เบ—เบนเป‰(0)-> clump->unthread(1), $bb->slice('(1), :'));

เบ•เบปเบงเบขเปˆเบฒเบ‡ 5:

# เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡ (เป€เบŠเบฑเปˆเบ™โ€‹: เบเบฒเบ™โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹) เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹
# เปƒเบŠเป‰ threading explicit เปเบฅเบฐเบเบฒเบ™เปเบšเปˆเบ‡ threaded implicitly
$stack = read_image_stack();
# เบ„เบดเบ”เป„เบฅเปˆเบ„เปˆเบฒเบชเบฐเป€เบฅเปˆเบ (เบ•เปเปˆ pixel เบชเบฐเป€เบฅเปˆเบ) เบ‚เบญเบ‡เบฎเบนเบš $n+1 เบ—เบณเบญเบดเบ”
$aver = zeroes([stack->dims]->[0,1]); # เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เบœเบฐเบฅเบดเบ” pdl
sumover($stack->slice(":,:,0:$n")->เบเบฐเบ—เบนเป‰(0,1),$aver);
$aver /= ($n+1);
$stack /= $aver; # เป€เบฎเบฑเบ”เปƒเบซเป‰ stack เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเป‚เบ”เบเบเบฒเบ™เป€เบฎเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡ threaded
# implicit เบเบฑเบš explicit
# เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ $aver เบ”เป‰เบงเบเบเบฒเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰ implicit เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
sumover($stack->slice(":,:,0:$n")->mv(2,0),($aver=null));
$aver /= ($n+1);
#

เบชเบปเบกเบšเบนเบ™เปเบšเบš เป€เบกเบทเปˆเบญเบ—เบฝเบšเบเบฑเบš เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ เบเบฐเบ—เบนเป‰
เปƒเบ™เบงเบฑเบเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบกเปˆเบ™เบ”เบตเบเบงเปˆเบฒ
เบเบฐเบ—เบนเป‰ implicit เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™. เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”
เป€เบญเบปเบฒเบเปเบฅเบฐเบ™เบตเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบฎเบนเป‰เปเบฅเป‰เบง: เบ—เบฑเบ‡เบชเบญเบ‡เบฅเบปเบ”เบŠเบฒเบ”เบ›เบฐเบชเบปเบกเบเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™
เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เป‚เบฅเบเปเบฅเบฐ, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เปƒเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ Perl เบ›เบฐเป€เบžเบ™เบต: TIMTOWTDI !

[เบ‚เปเบญเบฐเป„เบž, เบญเบฑเบ™เบ™เบตเป‰เบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบทเปˆเบกเปƒเบชเปˆเปƒเบ™เบชเบฐเบšเบฑเบšเบ•เปเปˆเบกเบฒ; เบญเบฒเบ”เบˆเบฐเบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡
เบซเบผเบทโ€‹เป€เบฅเบทเบญเบโ€‹เป€เบญเบปเบฒโ€‹เบšเบฒเบ‡โ€‹เบญเบฑเบ™โ€‹เปƒเบซเบกเปˆโ€‹]

เบชเบธเบ”เบ—เป‰เบฒเบ, เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเบžเบฝเบ‡เปเบ•เปˆเปƒเบซเป‰เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป„เบ›
เบขเบนเปˆเปƒเบ™เบ›เบฐเบกเบฒเบ™เบชเบญเบ‡เบชเบฒเบกเบซเบ™เป‰เบฒ: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฐเบ—เบนเป‰?

เบ”เบต, เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰ threading เบ„เบงเบ™ (เบซเบผเบฒเบ) เป„เบงเบเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰
explicit for-loops (เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡ Perl เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™) เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฝเบงเบเบฑเบ™.
เป‚เบ”เบโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปเบกเปˆเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบต (เบกเบตโ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบเบฒเบ™โ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบต vector / เบ‚เบฐโ€‹เบซเบ™เบฒเบ™โ€‹) PDLโ€‹
threading เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบงเบดเบ—เบตเบ—เบตเปˆเปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบชเบดเปˆเบ‡เบญเปเบฒเบ™เบงเบเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบก
เบ‚เบญเบ‡โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบˆเบฑเบโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบžเบฝเบ‡เปเบ•เปˆ (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™
เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบญเบฒเบ”เบˆเบฐเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบšเบฒเบ‡เบ„เบฑเป‰เบ‡) เปเบฅเบฐเบชเบฒเบกเบฒเบ” เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ เบซเบผเบธเบ”โ€‹เบœเปˆเบญเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบชเบฑเบšโ€‹เบชเบปเบ™ syntactical เบ‚เบญเบ‡โ€‹
เบฅเบฐเบซเบฑเบ” PDL (เปเบ•เปˆเบฎเบฑเบเบชเบฒเบ„เปเบฒเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเป€เบญเบเบฐเบชเบฒเบ™เบขเบนเปˆเปƒเบ™เปƒเบˆ). เป€เบกเบทเปˆเบญเป€เบˆเบปเป‰เบฒเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบ
เบเบฑเบš เบเบฐเบ—เบนเป‰ เบงเบดเบ—เบตเบเบฒเบ™เบ„เบดเบ” (เปเบฅเบฐเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”) เบกเบฑเบ™เบšเปเปˆเบ„เบงเบ™เบˆเบฐเบเบฒเบเป€เบเบตเบ™เป„เบ›เบ—เบตเปˆเบˆเบฐ
เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบœเบนเป‰โ€‹เบญเบทเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ‚เบฝเบ™โ€‹เบโ€‹เปˆโ€‹เบงเบฒ (เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปƒเบซเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบงเปˆเบฒโ€‹เปเบ™เบงโ€‹เปƒเบ”โ€‹
เบ‚เบฐเบซเบ™เบฒเบ”เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เบ—เบตเปˆเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบต, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เป€เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบปเปˆเบงเป„เบ›เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบฅเบฐเบซเบฑเบ”: เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปเบ™เบฐเบ™เปเบฒ loop เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบฎเบนเบšเบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง
เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ threading เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” loop เป„เบ”เป‰ (เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™
เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบ™เบตเป‰โ€‹; เปเบ•เปˆเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบกเบฑเบเบˆเบฐเบ„เบดเบ”เบงเปˆเบฒเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบซเบฒเบเบฒเบ
เบเปเบฅเบฐเบ™เบต ;).

PDL::PP


An เบ‡เปˆเบฒเบ เบงเบดเบ—เบตเบเบฒเบ™ to เบเปเบฒเบ™เบปเบ” เบซเบ™เป‰เบฒเบ—เบตเปˆ เบ—เบตเปˆ เบกเบต เบฎเบนเป‰ of เบ”เบฑเบ”เบชเบฐเบ™เบต เปเบฅเบฐ เบเบฐเบ—เบนเป‰ (เปเบฅเบฐ เป„เบ”เป‰ เบˆเบฑเบเบเบฐเบงเบฒเบ™ เปเบฅเบฐ
เบ—เบธเบเบขเปˆเบฒเบ‡)
PDL:PP เปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบˆเบเบขเบฒเบ PDL. เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบฎเบฑเบšเบฎเบนเป‰
indexing เปเบฅเบฐ threading เบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบฒเบเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบซเบเปเป‰เบซเบผเบฒเบ. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ‚เบฝเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹เบซเบผเบทโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹
เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบžเบฒเบเบ™เบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบเบฐเบ—เบนเป‰ (เปเบฅเบฐเบšเบฒเบ‡เบ—เบตเบเบฒเบ™เป„เบซเบฅเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™,
เป€เบšเบดเปˆเบ‡ PDL::Dataflow). เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเบงเบ”เป€เบšเบดเปˆเบ‡ PDL::PP.

เป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™ A


Affine เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™ - a เบžเบดเป€เบชเบ” เบฅเบฐเบ”เบฑเบš of เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบฅเบฐ เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™
[ เบญเบฑเบ™เบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบšเป
make_affine routine เปƒเบ™ PDL ? เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เบœเบนเป‰เบŠเบฒเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบญเบทเปˆเบ™
เบซเบ™เป‰เบฒโ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹]

เป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™ B


เบฅเบฒเบเป€เบŠเบฑเบ™ of เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ PDL::PP เบฅเบงเบšเบฅเบงเบก เบซเบ™เป‰เบฒเบ—เบตเปˆ
เบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡ PDL primitives เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ PP เบฅเบงเบšเบฅเบงเบกเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ”
เบซเบ™เป‰เบฒเบ—เบตเปˆ gobble เป€เบ–เบดเบ‡ (เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบญเบญเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ threaded เปƒเบ™เป„เบฅเบเบฐ). เบชเปˆเบงเบ™เปƒเบซเบเปˆ
เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ "primitive.pd"

# เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™ primitive.pd
#
sumover ((n),[o]())
prodover ((n),[o]())
axisvalues โ€‹โ€‹((n)) เปเบ—เบ™
เบžเบฒเบเปƒเบ™ ((n),(n),[o]())
เบ™เบญเบ ((n),(m),[o](n,m))
innerwt ((n),(n),(n),[o]())
inner2 ((m),(m,n),(n),[o]())
inner2t ((j,n),(n,m),(m,k),[o]())
เบ”เบฑเบ”เบŠเบฐเบ™เบต (1D,0D,[o])
เบ‚เบฑเป‰เบ™เบ•เปˆเบณ (1D,[o])
เบชเบนเบ‡เบชเบธเบ” (1D,[o])
wstat ((n),(n),(),[o],())
assgn (( ),())

# เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™
เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ„เบนเปˆ ((),(),[o]())
เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ unary ((),[o]())

เบœเบนเป‰เบ‚เบฝเบ™ & COPYRIGHT


เบฅเบดเบ‚เบฐเบชเบดเบ” (C) 1997 Christian Soeller ([email protected]) & Tuomas J. Lukka
([email protected]). เบชเบฐเบซเบ‡เบงเบ™เบฅเบดเบ‚เบฐเบชเบดเบ”เบ—เบฑเบ‡เปเบปเบ”. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ destined เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบญเบเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบœเบนเป‰เบŠเบฒเบ
เบ”เป‰เบงเบเบเบฒเบ™เปเบˆเบเบขเบฒเบ PDL เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เป‚เบ”เป€เบกเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ. เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปเบกเปˆเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹
เปเบˆเบเบขเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบชเบฐเบšเบฑเบšเบ™เบตเป‰เบขเปˆเบฒเบ‡เป€เบชเบฅเบตเป‚เบ”เบเบšเปเปˆเปƒเบซเป‰เบกเบตเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เบžเบฒเบเบ™เบญเบ
เบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบˆเบฐเบ–เบทเบเป€เบฎเบฑเบ”, เปเบฅเบฐเปเบˆเป‰เบ‡เบเบฒเบ™เบชเบฐเบšเบฑเบšเบ™เบตเป‰เบเบฑเบ‡เบ„เบปเบ‡ intact. เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เปเบฅเบฐ
เบŠเบธเบเบเบนเป‰เปƒเบซเป‰เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ•เบปเบงเบญเบฐเบ™เบธเบžเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบกเปˆเบงเบ™เบซเบผเบทเบชเปเบฒเบฅเบฑเบš
เบเบณเป„เบฅเบ•เบฒเบกเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบซเบฑเบ™เบžเปเบ”เบต.

เปƒเบŠเป‰ PDL::Indexingp เบญเบญเบ™เป„เบฅเบ™เปŒเป‚เบ”เบเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ onworks.net


เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบŸเบฃเบต

เบ”เบฒเบงเป‚เบซเบผเบ”เปเบญเบฑเบš Windows เปเบฅเบฐ Linux

  • 1
    เบœเบนเป‰เบ”เบฒเบงเป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบš
    เบœเบนเป‰เบ”เบฒเบงเป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบš
    เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบ”เบฒเบงเป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบšเป‚เบ”เบเปƒเบŠเป‰
    Selenium เปƒเบŠเป‰ python3 เปเบฅเบฐ PyQt5.
    เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบŠเบญเบเบซเบฒ: Google, Bing,
    Baidu. เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ„เปเบฒเบซเบฅเบฑเบเบˆเบฒเบเปเบ›เป‰เบ™เบžเบดเบก
    เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฒเบ ...
    เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹
  • 2
    Eclipse Tomcat Plugin
    Eclipse Tomcat Plugin
    Eclipse Tomcat Plugin เปƒเบซเป‰
    เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡ servlet tomcat
    container เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ java
    เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบš
    เบชเบปเบ™เบ—เบฐเบ™เบฒ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Eclipse Tomcat Plugin
  • 3
    Webstorrent Desktop
    Webstorrent Desktop
    WebTorrent Desktop เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”
    torrents เปƒเบ™ Mac, Windows เบซเบผเบท Linux. เบกเบฑเบ™
    เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ—เบฑเบ‡ BitTorrent เปเบฅเบฐ
    เบกเบดเบ”เบชเบฐเบซเบฒเบ WebTorrent. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเปเปˆเบกเบต
    เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบฅเปโ€‹เบ–เป‰เบฒ ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” WebTorrent Desktop
  • 4
    GenX
    GenX
    GenX เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเบกเปˆ
    เบเบฒเบ™เบชเบฐเบ—เป‰เบญเบ™เปเบชเบ‡ x-ray, เบ™เบดเบงเบ•เบฃเบญเบ™
    เบเบฒเบ™เบชเบฐเบ—เป‰เบญเบ™เปเบชเบ‡ เปเบฅเบฐ x-ray เบžเบทเป‰เบ™เบœเบดเบง
    เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เบซเบฑเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป‚เบ”เบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ„เบงเบฒเบกโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹
    เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™....
    เบ”เบฒเบงเป‚เบซเบฅเบ” GenX
  • 5
    pspp4windows
    pspp4windows
    PSPP เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบดเบ•เบด
    เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡. เบกเบฑเบ™เป€เบ›เบฑเบ™เบŸเบฃเบต
    เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡
    SPSS. PSPP เบกเบตเบ—เบฑเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเปเบฅเบฐ
    เบฎเบนเบšเบžเบฒเบšเบžเบงเบเป€เบฎเบปเบฒ ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” pspp4windows
  • 6
    Git เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
    Git เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ
    Git Extensions เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท UI เปเบšเบšเบ”เปˆเบฝเบง
    เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡ Git repositories. เบกเบฑเบ™เบเบฑเบ‡
    เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš Windows Explorer เปเบฅเบฐ
    Microsoft Visual Studio
    (2015/2017/2019). เบ—...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Git Extensions
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Linux เบ„เบณ เบชเบฑเปˆเบ‡

Ad