Polygnathus

Polygnathus
10–11. Polygnathus sp.
detail
10–14. Conodonts from the basal 20 cm of the Loyalhanna Limestone Member of the Mauch Chunk Formation, Keystone quarry, Pa. (93RS–79a), and Westernport, Md. (93RS–67). Note the highly abraded and reworked aeolian forms.
10. Polygnathus sp., Pa element, upper view, reworked Late Devonian to Early Mississippian morphotype, 93RS–79a, X140.
11. Polygnathus sp., Pa element, upper view, reworked Late Devonian to Early Mississippian morphotype, 93RS–67, X140.
Scientific classification
Kingdom:
Phylum:
Class:
Order:
Superfamily:
Family:
Genus:
Polygnathus

Hinde 1879
Species and subspecies

See text

Polygnathus is an extinct genus of conodonts.

Species

  • Polygnathus acrinodosus Aboussalam 2003
  • Polygnathus alkhovikovae Baranov, Slavík & Blodgett 2014
  • Polygnathus angustipennatus Bischoff and Ziegler 1957
  • Polygnathus aragonensis Martínez-Pérez & Valenzuela-Ríos 2014
  • Polygnathus arthuri Baranov, Slavík & Blodgett 2014
  • Polygnathus bardashevi Baranov, Slavík & Blodgett 2014
  • Polygnathus bicristatus Mossoni et al. 2015
  • Polygnathus burretti Savage 2013
  • Polygnathus chongqingensis Wang in Gong et al. 2012
  • Polygnathus carlsi Martínez-Pérez & Valenzuela-Ríos 2014
  • Polygnathus communis
    • Polygnathus communis hanensis Savage 2013
    • Polygnathus communis longanensis Qie et al. 2014
    • Polygnathus communis namdipensis Savage 2013
    • Polygnathus communis phaphaensis Savage 2013
  • Polygnathus costatus Klapper 1971
    • Polygnathus costatus partitus
  • Polygnathus crassulus
    • Polygnathus crassulus salapensis Savage 2013
  • Polygnathus damelei Vodrazkova et al. 2011
  • Polygnathus dujieensis Qie et al. 2014
  • Polygnathus efimovae Kononova et al. 1996
  • Polygnathus extralobatus phoensis Savage 2013
  • Polygnathus hemiansatus
  • Polygnathus hemipennatus Aboussalam 2003
  • Polygnathus hojedki Gholamalian et al. 2013
  • Polygnathus holynensis Vodrazkova et al. 2011
  • Polygnathus housei Aboussalam 2003
  • Polygnathus ivanowskyii Baranov, Slavík & Blodgett 2014
  • Polygnathus karsteni Baranov, Slavík & Blodgett 2014
  • Polygnathus kitabicus
  • Polygnathus lezhoevi Baranov, Slavík & Blodgett 2014
  • Polygnathus ilmenensis Zhuravlev 2003
  • Polygnathus linguiformis Hinde[1]
  • Polygnathus michaelmurphyi Baranov, Slavík & Blodgett 2014
  • Polygnathus nuragicus Mossoni et al. 2015
  • Polygnathus pollocki Druce 1976
  • Polygnathus postvogesi Plotitsyn & Zhuravlev 2017
  • Polygnathus praeinversus Lu et al. 2018
  • Polygnathus pseudocommunis Wang et al. 2016
  • Polygnathus pseudocostatus Klapper & Vodrážková 2013
  • Polygnathus ramoni Martínez-Pérez & Valenzuela-Ríos 2014
  • Polygnathus robertensis Vodrazkova et al. 2011
  • Polygnathus rossicus Zhuravlev 2000
  • Polygnathus salixensis Vodrazkova et al. 2011
  • Polygnathus settedabanicus Baranov, Slavík & Blodgett 2014
  • Polygnathus sharyuensis Ovnatanova et al. 2019
  • Polygnathus varcus Stauffer 1940
  • Polygnathus wapanuckensis Harlton 1933
  • Polygnathus yakutensis Baranov, Slavík & Blodgett 2014

Use in stratigraphy

The Tournaisian, the oldest age of the Mississippian (also known as Lower Carboniferous), contains eight conodont biozones, one of which is defined by a Polygnathus species:

  • the zone of Gnathodus pseudosemiglaber and Scaliognathus anchoralis
  • the zone of Gnathodus semiglaber and Polygnathus communis
  • the zone of Dollymae bouckaerti
  • the zone of Gnathodus typicus and Siphonodella isosticha
  • the zone of Siphonodella quadruplicata and Patrognathus andersoni (upper zone of Patrognathus andersoni)
  • the lower zone of Patrognathus andersoni
  • the zone of Patrognathus variabilis
  • the zone of Patrognathus crassus
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
gollark: I can write some code for this if desisred.

See also

References

  1. Lower Devonian Subspecies of the Conodont Polygnathus linguiformis Hinde from Southeastern Australia. G. M. Philip and J. H. Jackson, Journal of Paleontology, Vol. 41, No. 5 (Sep., 1967), pages 1262-1266 (Stable URL retrieved 1st May 2016)


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