﻿7r4->Tensor.Fill()
7r4->Tensor.Fill(2)
3r4->Tensor.Fill(2, 4)
3r4->Tensor.Fill(2, 4, 3)
3r4->Tensor.Fill(2, 4, 3, 2)
3r4->Tensor.Fill(Wrap(2), Wrap(4), Wrap(3), Wrap(2))

null->Tensor.From()
null->Tensor.From(5)
[1, 2, 3]->Tensor.From()
Range(12)->Tensor.From()
Range(12)->Tensor.From(0)
Range(12)->Tensor.From(5)
Range(12)->Tensor.From(4, 3)
Range(12)->Tensor.From(2, 3, 2)
Range(12)->Tensor.From(2, 3, 4)
Range(12)->Tensor.From(Wrap(2), Wrap(3), Wrap(4))
Range(12)->Tensor.From(Wrap(-1), Wrap(-3))
Range(12)->Null()->Tensor.From(3)
Range(12)->Null()->Tensor.From(3, 4)
Range(12)->CastR4()->Tensor.From(4, 3)
Range(12)->TakeIf(it mod 3 != 0)->CastU1()->Tensor.From(4, 2)
Range(12)->TakeIf(it mod 3 != 0)->CastU1()->Tensor.From(4, 3)

// Non-trivial default.
Range(1, 5)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From()
Range(1, 5)->Filter(false)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From()
Range(1, 5)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From(7)
Range(1, 5)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From(2, 5)
Range(1, 5)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From(3, 3, 3)

Range(1, 5)->Filter(false)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From()->Reshape()
Range(1, 5)->Filter(false)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From()->Reshape(3, 0)
`` T := Range(1, 5)->{A: it, B:ToText(it), C:{X:it}, D:(it,)}->Tensor.From()
T->Reshape()
T->Reshape(7)
T->Reshape(2, 5)
T->Reshape(3, 3, 3)
T->Reshape(4, 0)

// Compare negative dimensions.
Tensor.From([1,2,3], -3, 10)
`` x := -3
Tensor.From([1,2,3], x, 10)

Range(12)->Tensor.From(4, 3)->Reshape(3, 4)
Range(12)->Tensor.From(4, 3)->Reshape(12)
Range(12)->Tensor.From(4, 3)->Reshape(7)
Range(12)->Tensor.From(4, 3)->Reshape()
Range(12)->Tensor.From(4, 3)->Reshape(0, 3)
Range(12)->Tensor.From(4, 3)->Reshape(1, 3)
Range(12)->Tensor.From(4, 3)->Reshape(5, 2)
Range(12)->Tensor.From(12)->Reshape(12)
7r4->Tensor.Fill()->Reshape()
7r4->Tensor.Fill(2)->Reshape()

Range(12)->Tensor.From(12)->Reshape(1)->Reshape(12)
Range(12)->Tensor.From(12)->Reshape(0)->Reshape(12)
Range(12)->Tensor.From(12)->Reshape(0)->Reshape(0)
Range(12)->Tensor.From(12)->Reshape(1,0,0)->Reshape(2,0,0)

Range(12)->Tensor.From(4, 3).Shape
Range(12)->Tensor.From(Wrap(-1), Wrap(-3)).Shape
Range(12)->Tensor.From(0).Shape

Range(12)->Tensor.From(4, 3).Values
Range(12)->Tensor.From(Wrap(-1), Wrap(-3)).Values
Range(12)->Tensor.From(0).Values

`` TN := Null(T);

Tensor.Values(TN)

`` TR := Tensor.Fill(3, 2, 3);

TR->Values()

`` TNR := Tensor.From(Range(12), 3, 4)[:, 1:];

TNR.Values

With(t:Range(0)->Tensor.From(), (t, t->Transpose()))
With(t:Range(12)->Tensor.From(), (t, t->Transpose()))
With(t:Range(12)->Tensor.From(3, 4), (t, t->Transpose()))
With(t:Range(12)->Tensor.From(2, 3, 2), (t, t->Transpose()))
With(t:Range(12)->Tensor.From(2, 3, 1, 2), (t, t->Transpose()))
With(t:Range(12)->Tensor.From(2, 3), (t, t->Transpose()))
With(t:Range(12)->Tensor.From(4, 5), (t, t->Transpose()))

With(t0:Range(12)->Tensor.From(2, 3, 1, 2), t1:t0->Transpose(), t2:t1->Reshape(2, 1, 2, 3), t3:t2->Transpose(), (t0, t1, t2, t3))
With(t0:Range(12)->Tensor.From(2, 3, 1, 2), t1:t0->Transpose(), t2:t1->Reshape(), t3:t2->Transpose(), (t0, t1, t2, t3))
With(t0:Range(12)->Tensor.From(2, 3), t1:t0->Transpose(), t2:t1->Reshape(4, 3), t3:t2->Transpose(), (t0, t1, t2, t3))
With(t0:Range(12)->Tensor.From(4, 5), t1:t0->Transpose(), t2:t1->Reshape(4, 3), t3:t2->Transpose(), (t0, t1, t2, t3))

With(t:Range(6)->Tensor.From(3, 4), (t, t->Transpose()))
With(t0:3->Tensor.Fill(2, 4, 3), t1:t0->Transpose(), t2:t1->Reshape(4, 3, 2), t3:t2->Transpose(), (t0, t1, t2, t3))

With(t0:Range(12)->Tensor.From(12), t1:t0->Transpose(0), t2:t1->Transpose(0), (t0, t1, t2))
With(t0:Range(12)->Tensor.From(3,4), t1:t0->Transpose(1,0), t2:t1->Transpose(1,0), (t0, t1, t2))
With(t0:Range(12)->Tensor.From(2,3,2), t1:t0->Transpose(2,0,1), t2:t1->Transpose(2,0,1), t3:t2->Transpose(2,0,1), (t0, t1, t2, t3))
With(t0:Range(12)->Tensor.From(2,1,3,2), t1:t0->Transpose(3,1,0,2), t2:t1->Transpose(3,1,0,2), t3:t2->Transpose(3,1,0,2), t4:t3->Transpose(3,1,0,2), (t0, t1, t2, t3, t4))
With(t0:Range(60)->Tensor.From(5,2,1,3,2), t1:t0->Transpose(3,4,1,0,2), t2:t1->Transpose(3,4,1,0,2), t3:t2->Transpose(3,4,1,0,2), t4:t3->Transpose(3,4,1,0,2), t5:t4->Transpose(3,4,1,0,2), (t0, t1, t2, t3, t4, t5))

With(t0:Range(6)->Tensor.From(1,2,1,3,2), t1:t0->Transpose(3,4,1,0,2), t2:t1->Transpose(3,4,1,0,2), t3:t2->Transpose(3,4,1,0,2), t4:t3->Transpose(3,4,1,0,2), t5:t4->Transpose(3,4,1,0,2), (t0, t1, t2, t3, t4, t5))
With(t0:Range(12)->Tensor.From(3,4), t1:t0->Transpose(1,0), t2:t1->Reshape(2,3,2), t3:t2->Transpose(2,0,1), (t0, t1, t2, t3))
With(t0:3->Tensor.Fill(2,4,3), t1:t0->Transpose(2,0,1), t2:t1->Reshape(4, 3, 2), t3:t2->Transpose(1,2,0), (t0, t1, t2, t3))

With(t:Range(12)->Tensor.From(12), (t, t->ExpandDims(0)))
With(t:Range(12)->Tensor.From(12), (t, t->ExpandDims(1)))
With(t:Range(12)->Tensor.From(12), (t, t->ExpandDims(2,0)))
With(t:Range(12)->Tensor.From(3,4), (t, t->ExpandDims(1,0,4)))
With(t:Range(12)->Tensor.From(2,3,2), (t, t->ExpandDims(2,0,5)))
With(t:Range(12)->Tensor.From(2,3,2), (t, t->ExpandDims(2,0,6,1)))
With(t:Range(12)->Tensor.From(2,3,2), (t, t->ExpandDims(2,0,6,4,7)))

With(t:Range(5)->Tensor.From(2,3,2), (t, t->ExpandDims(0,2,5)))
With(t:3->Tensor.Fill(2,3,2), (t, t->ExpandDims(0,2,5)))

With(t:3->Tensor.Fill(), (t, t->ExpandDims(0)))
With(t:3->Tensor.Fill(), (t, t->ExpandDims(1,0)))
With(t:3->Tensor.Fill(), (t, t->ExpandDims(1,2,0)))
With(t:3->Tensor.Fill(), (t, t->ExpandDims(3,1,2,0)))
With(t:3->Tensor.Fill(), (t, t->ExpandDims(3,1,2,4,0)))

// Fibonacci.
Range(12)->ScanX(p: Tensor.From([0,1], 2), p->Dot(Tensor.From([0,1,1,1], 2, 2)))
