Please feel free to experiment here, after the four dashes below... and please do NOT create new pages without any meaningful content just to try it out!
Tip: Shift-click "HelpOnEditing" to open a second window with the help pages.
data S = Do | Re | Mi
data Song = Do | Re | Mi
\}\}\}
Hint: Add your favorite pages to your navibar. See your Quicklinks list in your user preferences.
type Vector = [Double]
normSquared :: Vector -> Double
normSquared = sum . map (^2)
norm :: Vector -> Double
norm = sqrt . normSquared
scale :: Double -> Vector -> Vector
scale a = map (a*)
normalize :: Vector -> Vector
normalize v = scale (recip (norm v)) v
It is possible to do scale and normSquared at the same time. Internally the data must still be processed twice but this can be hidden.
Consider a vector represented as a list of doubles. Suppose we want to normalize a vector. The standard method is to compute the length in one pass, and scale the vector in another pass:
type Vector = [Double]
normSquared :: Vector -> Double
normSquared = sum . map (^2)
norm :: Vector -> Double
norm = sqrt . normSquared
scale :: Double -> Vector -> Vector
scale a = map (a*)
normalize :: Vector -> Vector
normalize v = scale (recip (norm v)) v
It is possible to do scale and normSquared at the same time. Internally the data must still be processed twice but this can be hidden.
1 -- fst of the result is the scaled value of the vector
2 -- snd of the result is the squared norm of the vector before scaling
3 scaleAndNormSquared :: Double -> Vector -> (Vector, Double)
4 scaleAndNormSquared a [] = ([], 0)
5 scaleAndNormSquared a (x:xs) = (a*x:recScale, x*x+recNormSquared)
6 where (recScale, recNormSquared) = scaleAndNormSquared a xs
Now using the laziness of Haskell, and recursive binding, we can use scaleAndNormSquared to create a virtually one-pass normalization. We need to scale by the reciprocal of the square-root of normSquared. So we say exactly that.
1 circNormalize :: Vector -> Vector
2 circNormalize v = scaledVector
3 where (scaledVector, normSquared) = scaleAndNormSquared (recip (sqrt normSquared)) v
Now using the laziness of Haskell, and recursive binding, we can use scaleAndNormSquared to create a virtually one-pass normalization. We need to scale by the reciprocal of the square-root of normSquared. So we say exactly that.
1 circNormalize :: Vector -> Vector
2 circNormalize v = scaledVector
3 where (scaledVector, normSquared) = scaleAndNormSquared (recip (sqrt normSquared)) v
Formatting
italic bold typewriter
backtick typewriter (configurable)
bigger smaller
preformatted some more and some more lines too
Linking
http://moinmoin.wikiwikiweb.de/ Python
An internal link that looks like normal text.
Image Link
Smileys
Alert
Lists
Bullet
- first
- nested and numbered
- numbered lists are renumbered
- second
- third blockquote
- deeper
Glossary
- Term
- Definition
Drawing
Heading 1
Heading 2
Heading 3
Heading 4
IRC Log test
1 (23:18) < jroes> ah
2 (23:19) < jroes> hm, i like the way {{{ works, but i was hoping the lines would wrap
3 (23:21) -!- gpciceri [~gpciceri@host181-130.pool8248.interbusiness.it] has quit [Read error: 110 (Connection timed out)]
4 (23:36) < ThomasWal> you could also write a parser or processor
5 (23:38) < jroes> i could?
6 (23:38) < jroes> would that require modification on the moin end though?
7 (23:38) < jroes> i cant change the wiki myself :x
8 (23:39) < ThomasWal> parsers and processors are plugable
9 (23:39) < ThomasWal> so you dont need to change the core code
10 (23:40) < ThomasWal> you need to copy it to the wiki data directory though
11 (23:40) < jroes> well, what i meant to say was that i dont have access to the box running the wiki
12 (23:40) < ThomasWal> then this is no option
13 (23:40) < jroes> yeah :/
