Pat Perkins

Patricia "Pat" Perkins (born September 3, 1953) is a Scottish-Canadian politician. Perkins served as the Conservative Member of Parliament for Whitby—Oshawa from 2014 to 2015. She was elected in a by-election held on November 17, 2014 following the death of Jim Flaherty.[1][2]

Pat Perkins
Member of the Canadian Parliament
for Whitby—Oshawa
In office
November 17, 2014  August 4, 2015
Preceded byJim Flaherty
Succeeded byCelina Caesar-Chavannes
Mayor of Whitby, Ontario
In office
2006–2014
Preceded byMarcel Brunelle
Succeeded byDon Mitchell
Personal details
Born (1953-09-03) September 3, 1953
Glasgow, Scotland
Political partyConservative

Prior to being elected to the House of Commons of Canada, Perkins was a Whitby, Ontario municipal councillor from 1997 until 2006 when she challenged incumbent mayor Marcel Brunelle, defeating him by less than 200 votes in the 2006 municipal election. Perkins served as mayor of Whitby for two terms from 2006 to 2014. She did not run for reelection to the mayoralty in the 2014 municipal election, due to the pending federal byelection.[1]

Perkins was a member of the Standing Committee on Natural Resources and the Standing Committee on the Status of Women.

However, her term as an MP would be short-lived, as she was defeated in the federal election the following year in the redistricted riding of Whitby by Celina Caesar-Chavannes, who she had earlier defeated in the by-election.[3]

Electoral record

Federal

2015 Canadian federal election: Whitby
Party Candidate Votes%±%Expenditures
LiberalCelina Caesar-Chavannes29,00344.95+30.46
ConservativePat Perkins27,15442.09-16.72
New DemocraticRyan Kelly6,67710.35-11.06
GreenCraig Cameron1,4032.17-2.81
IndependentJon O'Connor2790.43
Total valid votes/Expense limit 64,516100.0   $233,003.12
Total rejected ballots 235
Turnout 64,751
Eligible voters 90,964
Source: Elections Canada[4][5]
Canadian federal by-election, November 17, 2014: Whitby—Oshawa
Party Candidate Votes%±%
ConservativePat Perkins17,03349.2
LiberalCelina Caesar-Chavannes14,08240.7
New DemocraticTrish McAuliffe2,8008.1
GreenCraig Cameron4961.4
IndependentJohn Turmel1070.3
IndependentJosh Borenstein870.3
Total valid votes/Expense limit
Total rejected ballots
Turnout 34,605 31.76
Eligible voters 108,969  
By-election due to the death of Jim Flaherty.
Source: "List of candidates — Whitby--Oshawa (Ontario) — By-election (Monday, November 17, 2014)". Elections Canada. Archived from the original on November 8, 2014. Retrieved November 8, 2014.

Mayor of Whitby, Ontario

2010

Mayoral Candidate Vote[6] %
Pat Perkins (X)12,06447.55
Rocky Varcoe8,98735.42
Marcel Brunelle4,32217.03

2006

Mayoral Candidate Vote %
Pat Perkins9,78450.5
Marcel Brunelle (X)9,58949.5
gollark: So, I finished that to highly dubious demand. I'd like to know how #11 and such work.
gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.
gollark: > `def __eq__(self, xy): return self.bigData[math.floor(xy.real * self.n + xy.imag)]`This actually gets indices into the matrix. I named it badly for accursedness. It uses complex number coordinates.> `def __matmul__(self, ǫ):`*This* function gets a 2D "slice" of the matrix between the specified coordinates. > `for (fοr, k), (b, р), (whіle, namedtuple) in itertools.product(I(*int.ℝ(start, end)), enumerate(range(ℤ(start.imag), math.floor(end.imag))), (ǫ, ǫ)):`This is really just bizarre obfuscation for the basic "go through every X/Y in the slice" thing.> `out[b * 1j + fοr] = 0`In case the matrix is too big, just pad it with zeros.> `except ZeroDivisionError:`In case of zero divisions, which cannot actually *happen*, we replace 0 with 1 except this doesn't actually work.> `import hashlib`As ever, we need hashlib.> `memmove(id(0), id(1), 27)`It *particularly* doesn't work because we never imported this name.> `def __setitem__(octonion, self, v):`This sets either slices or single items of the matrix. I would have made it use a cool™️ operator, but this has three parameters, unlike the other ones. It's possible that I could have created a temporary "thing setting handle" or something like that and used two operators, but I didn't.> `octonion[sedenion(malloc, entry, 20290, 15356, 44155, 30815, 37242, 61770, 64291, 20834, 47111, 326, 11094, 37556, 28513, 11322)] = v == int(bool, b)`Set each element in the slice. The sharp-eyed may wonder where `sedenion` comes from.> `"""`> `for testing`> `def __repr__(m):`This was genuinely for testing, although the implementation here was more advanced.> `def __enter__(The_Matrix: 2):`This allows use of `Matrix` objects as context managers.> `globals()[f"""_"""] = lambda h, Ĥ: The_Matrix@(h,Ĥ)`This puts the matrix slicing thing into a convenient function accessible globally (as long as the context manager is running). This is used a bit below.
gollark: * desired

References


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.